C++派生类练习题

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ cout<<"con.C\n"; }
void print()
{
A::print2();
B1::print();
B2::print();
cout<<c<<endl;
}
~C( ){ cout<<"des.C\n";}
private:
int c;
};
void main( )
{C c1(1,2,3,4,5);
{ cout<<s2<<" "<<"C's con."<<endl;}
};class D:public B,public C
{ public:
D(const char *s1,const char *s2,const char *s3,const char *s4):B(s4,s2),C(s2,s3),A(s1)
~C(){cout<<"destructor C"<<endl;}
};
class D:public A,public B,public C
{
public:
D(int i,int j,int k):A(i),B(j),n(k){}
private:
int n;
};
void main()
{
D obj(2,4,6);
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";}
class M1
{public:
M1(int i){m1=i;cout<<"constructor M1."<<i<<endl;}
void print(){cout<<m1<<endl;}
~M1(){cout<<"destructor M1."<<endl;}
private:
int m1;
};
class M2
A(int i){a=i;cout<<"A's constructor called.\n";}
~A(){cout<<"A's destructor called.\n";}
void print() const{cout<<a<<",";}
private:
int a;
};
class B:public A
{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;
~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)
~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";}
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";}
void print()
{cout<<b1<<endl;}
~B1(){ cout<<"des. Bl\n";}
private:
int b1;
};
class B2:virtual public A
{public:
B2(int i,int j):A(i){ b2=j;cout<<"con.B2\n";}
派生类部分作业
一.选择题
1.下列对派生类的描述中,是错误的。
A.派生类中继承的基类成员的访问权限到派生类保持不变
B.一个派生类可以作为另一个派生类的基类
C.派生类至少有一个基类
D.派生类的成员除了它自己的成员外,还包含了它的基类的成员
2.派生类Leabharlann Baidu造函数执行的顺序,是正确的。
A.调用基类构造函数,然后调用派生类对象的构造函数,再执行派生类的构造函数体中的内容
};
class level2:public base1,virtual public base
{
public:
level2(){cout<<"this is level2 class!"<<endl;}
};
class toplevel:public level1,virtual public level2
{
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;}
{
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;}
{ 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"
~A(){cout<<"destructor A"<<endl;}
};
class B
{public:
B(int j){cout<<"constructor B"<<j<<endl;}
~B(){cout<<"destructor B"<<endl;}
};
class C
{public:
C(){cout<<"constructor C"<<endl;}
protected:
intpro2;
private:
int pri2;
};
class C: public B
{
public:
void pub3(){cout<<pri2<<endl;}//------------(B)
};
class D:privateC
{
public:
void pub4();
};
void main()
void print()
{cout<<b2<<endl;}
~B2(){ cout<<"des.B2\n"; }
private:
int b2;
};
class C:public B1,public B2
{
public:
C(int i,int j,int k,int l,int m):B2(k,l),B1(i,j),c(m),A(i)
{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
}
7.下面的程序是用派生类技术计算出半径为5的圆的面积和球的体积并在屏幕上输出。
请选择填空,完成程序。
#include "iostream.h"
class Circle
{protected:
float r;
public:
Circle(float i):r(i){}
virtual float value()
};
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;}
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 ;}
B.调用基类构造函数,然后调用成员对象的构造函数,再执行派生类的构造函数体中的内容
C.调用基类构造函数,然后调用派生类的构造函数,再执行派生类的构造函数体中的内容
D.调用基类构造函数,然后调用基类成员对象的构造函数,再执行派生类的构造函数体中的内容
二.分析程序的执行结果,并上机验证
1.
#include“iostream.h”
{
C c1;
D d1;
c1.A::pub1;//-------------(C)
d1.C::pub3;//-------------(D)
}
5.
#include"iostream.h"
class base
{
public:
base(){cout<<"this is base class!"<<endl;}
{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)
class circle
{
protected:
double r;
public:
void set(double i);
virtual double value();
void display();
};
其中r为圆的半径,成员函数value()计算圆的面积,成员函数display()输出value()的值,请将类中的成员函数在类外定义,并要求编写派生类,在不修改基类代码的基础上,应用虚函数修改基类行为的技术,在main()函数中,输出半径为5的球体的体积。
#include"iostream.h"
class A
{
public:
void pub1();
protected:
intpro1;
private:
int pri1;
};
class B: protected A
{
public:
void pub2(){cout<<pro1<<endl;}//--------(A)
{
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.下面标出的函数及语句中,正确的为。
相关文档
最新文档