当前位置:文档之家› C++派生类练习题

C++派生类练习题

};
class base1
{
public:
base1(){cout<<"this is base1 class!"<<endl;}
};
class level1:public base1,virtual public base
{
public:
level1(){cout<<"this is level1 class!"<<endl;}
{
b=j;
cout<<"B's constructor called.\n";
}
void B::print()
{
A::print();
cout<<b<<endl;
}
void main()
{
B bb1;
B bb2(1,2,3);
bb1.print();
bb2.print();
}
4.下面标出的函数及语句中,正确的为。
{ cout<<s2<<" "<<"C's con."<<endl;}
};class D:public B,puห้องสมุดไป่ตู้lic C
{ public:
D(const char *s1,const char *s2,const char *s3,const char *s4):B(s4,s2),C(s2,s3),A(s1)
~N(){cout<<"destructor N."<<endl;}
private:
int n;
M1 mm1;
M2 mm2;
};
void main()
{
N nn(1,2,3,4);
nn.print();
}
2.
#include“iostream.h”
class A
{
public:
A(int i){ a=i;cout<<"con.A\n";}
B.调用基类构造函数,然后调用成员对象的构造函数,再执行派生类的构造函数体中的内容
C.调用基类构造函数,然后调用派生类的构造函数,再执行派生类的构造函数体中的内容
D.调用基类构造函数,然后调用基类成员对象的构造函数,再执行派生类的构造函数体中的内容
二.分析程序的执行结果,并上机验证
1.
#include“iostream.h”
void print1()
{cout<<"virtual class"<<endl; }
void print2()
{cout<<a<<endl;}
~A(){cout<<"des. A\n";}
private:
int a;
};
class B1:virtual public A
{
public:
B1(int i,int j):A(i) {b1=j;cout<<"con.B1\n";}
~A() {}};
class B:virtual public A
{public:
B(const char *s1,const char *s2):A(s1)
{ cout<<s2<<" "<<"B's con."<<endl;}
};
class C: virtual public A
{
public:
C(const char *s1,const char *s2):A(s1)
{ cout<<s4<<" "<<"D's con."<<endl; }
};
void main()
{
D *ptr=new D("class A", "class B", "class C", "class D");
delete ptr;
}
二.编程题
已知有一类circle如下:
#include"iostream.h"
{
public:
N(int i,int j,int k,int l):M1(i),M2(j),mm1(k),mm2(l)
{n=3;cout<<"constructor N."<<l<<endl;}
void print()
{M1::print();M2::print();cout<<n<<endl;}
l=3.14f*r*r*r*4/3;
return l;
}
};
void main()
{Circle c(5),*p;
Ball b(5);
p=&c;
p->display();
p->display();
}
8.#include <iostream.h>
class A
{public:
A(const char *s) { cout<<s<<" "<<"A's con."<<endl ;}
{
public:
toplevel(){cout<<"this is toplevel class!"<<endl;}
};
void main()
{
toplevel topobj;
}
6.
#include"iostream.h"
class A
{public:
A(int i){cout<<"constructor A"<<i<<endl;}
}
7.下面的程序是用派生类技术计算出半径为5的圆的面积和球的体积并在屏幕上输出。
请选择填空,完成程序。
#include "iostream.h"
class Circle
{protected:
float r;
public:
Circle(float i):r(i){}
virtual float value()
{public:
M2(int i){m2=i;cout<<"constructor M2."<<i<<endl;}
void print(){cout<<m2<<endl;}
~M2(){cout<<"destructor M2."<<endl;}
private:
int m2;
};
class N:public M1,public M2
{float l;
l=3.14f*r*r;
return l;
}
void display()
{cout<<value()<<endl;}
};
class Ball:public Circle
{public:
Ball(float i):Circle(i){}
virtual float value()
{float l;
{public:
B(){b=0,cout<<"B's default constructor called.\n";}
B(int i,int j,int k);
~B(){cout<<"B's destructor called.\n";}
void print();
private:
int b;
};
B::B(int i,int j,int k):A(i)
protected:
intpro2;
private:
int pri2;
};
class C: public B
{
public:
void pub3(){cout<<pri2<<endl;}//------------(B)
};
class D:privateC
{
public:
void pub4();
};
void main()
c1.print( );
c1.A::print1();
B1b1(6,7);
B2 b2(8,9);
b1.A::print2();
b2.print();
}
3.
#include"iostream.h"
class A
{public:
A(){a=0;cout<<"A's default constructor called.\n";}
class M1
{public:
M1(int i){m1=i;cout<<"constructor M1."<<i<<endl;}
void print(){cout<<m1<<endl;}
相关主题