402-096-C++程序
习
集
上机题:先定义“高度”类Hight 和“圆”类Circle,再由Hight和Circle多重派生出“圆柱体”类Cylinder。在主函数中定义一个圆柱体对象,调用成员函数求出圆柱体的体积和表面积。 第一部分:
一(选择填空题
1(类成员缺省的访问特征是_C_,结构体缺省的访问权限是__B_.
A. protected B. public C. private D. friend
2(下列关于类的成员的访问特征的描述中,正确的___
A.必须首先说明具有私有特征的成员
B.数据成员必须说明成私有的,成员函数必须说明成私有的
C.每个成员前都必须有标明访问特性的关键字
D.在同一类中,说明访问特性的关键字可以多次使用
3(关于类和对象,下列说法不正确的是___
A. 类与对象的关系类似于数据类型与变量的关系
B.对象是类的一个实例
C.任何一个对象必定属于一个特定的类
D.一个类只能有一个对象
4(关于类的一个成员函数,下列说法中正确的是()
A.必须在类内定义 B. 一定是内联函数
C.不可以重载 D.可以设置参数的缺省植
5(以下不可以作为类的成员的是()
A. 自身类对象的指针 B. 自身类的对象
C.自身类对象的引用 D. 另一个类对象的引用 6(已知一个类,类名为A,可以定义A类的对象或定义A类的指针,下列
一定不正确的形式为____
A. A a1 B. A a2 ( 16 )
C. A A3( ) D. A *P= new A
7. 已知一个类COMPLEX, 有下述两行:
Complex c ; //A
Complex c() //B
以下描述中错误的是___
A. A行定义了一个对象,并调用缺省的构造函数
B. B行定义了一个对象,并调用缺省的构造函数
C. B行是一个函数的原型说明,函数名为C,函数没有参数,返回值
类型是Complex
D. A行和B行两行的意义不一样
8.设有下列对象定义;
class A
{
public :
int a ,b ;
} a1= {1,2}, a2 ,a3 ;
class
{
public :
int a,b;
}a4 ;
则以下正确的定义或赋值形式是___
A. a3=a2=a1; B. a4=a1; C. A *p=&a4; D. A &re=a4
9. 下列描述中, ___不是构造函数的特征
A. 构造函数可以重载
B. 必须显示为类定义一个构造函数
C. 无须为构造函数指定返回值类型
D. 构造函数在产生对象时由系统自己调用
10.下列有关析构函数的描述中,正确的是___ A. 析构函数的定义只能在类体内
B. 析构函数可以有一个或多个参数
C. 析构函数是在撤消对象时,系统自动调用的 D. 析构函数可以重载
11.以下关于构造函数和析构函数的描述中错误的是___
A. 用户不定义缺省的构造函数,则系统自动生成一个缺省的构造函数
B. 若用户不定义拷贝的构造函数,则系统自动生成一个拷贝的构造函数
C. 若用户不定义析构函数,则系统自动生成一个析构函数
D. 以上A错误,而B,C正确
12.定义复数类如下;
class Complex
{ double real ,image ;
public:
Complex (double r=0 ,double i=0 ) {real =r ; image =i ;}
Complex (Complex &c) {real=c.real ; image=c .image ;}
};
若有Complex c1; //A
Complex c2(3,5); //B
Complex c3(c2); //C
c2=c1; //D 则下列描述中正确的是___
A. C行和D行均调用了拷贝构造函数
B. C行调用了拷贝构造函数
C. B行调用了拷贝构造函数
D. A行调用了拷贝构造函数
13. class A
{int x, int y ;
public ;
A (int a, int b ) {x=a;y=b;}
void show(){cout<
class A
{ int a;
public:
A(int x=10){a=x;}
int GetA(){return a;}
};
class B
{ int b;
public:
B(int x){b=x;}
int GetB(){return b;}
};
class C {
int c;
A aobj;
B bobj;
public:
C(int x,int y,int z):aobj(y),bobj(z) //E
{c=x;}
void Print()
{cout<
class A
{ int x,y;
public:
A( ){x=y=0;}
A(int i=0,int j=0){x=i,y=j;}
void show(){cout<
class A
{ int x,y;
public:
A( ){x=y=0;cout<<”Default constructor called.\n;}
A(int i,int j)
{x=i,y=j cout<
class A
{ int x,y;
public:
A(int i=0,int j=0)
{ x=i; y=j;
show ();
cout<<”Constructor called.\n”;
}
A(A &a);
~A( ){ show(); cout<<”Destructor called.\n”; }
void set(int i=0,int j=0){x=i;y=j;}
void show(){cout< class A
{ int x ,y ;
public:
A(int i=0,int j=0 )
{x=i,y=j;Show( ) ;cout<<”constructor called .\n” }
~A( ) { Show ( );cout<<”destructor called .\n”;}
void Set (int i=0,int j= 0) {x=i,y=j;}
void Show ( ){ cout < class Complex
{int real ,image ; public :
Complex (int x=0,int y=0 ) {real =x ;image=y;
Show ( );
cout<<”construct\n”;
}
~Complex( )
{ Show ( );cout<
class Test
{ int x ;
public:
Test ( int i=0 ) {x=i;} void print ( )
{ cout < class List
{
int a[10],n;
public :
List (int a [10],int n ) {
List : : n=n; //List ::n 表示数据成员n ,以便与参数n区别
for (int i=0 ; i和作用域
运算符
D. 静态数据成员不是所属类的所有对象共有的 3. 以下关于友员函数的描述错误的是___
A. 友员函数不是成员函数
B. 友员函数加强了类的封装性
C. 友员函数可以访问所属类的私有成员
D. 友员函数的作用是提高程序的运行效率 4. 关于成员函数特征的下列描述中错误的是___
A. 成员函数一定是内联函数
B. 成员函数可以重载
C. 成员函数可以设置参数的缺省值
D. 成员函数可以是静态的
5.写出以下程序的运行结果
#include
class Count
{
static int count ;
public :
Count ( ) {count ++; cout< class Sample
{
int A;
static int B;
public:
Sample(int a){A=a,B+=a;} static void func(Sample s); };
void Sample::func(Sample s) {
cout<<"A="<方法。其中的数据成员B是静态数据成员,求B之值
是在构造函数中进行的。所以输出为:
A=2,B=7
A=5,B=7
注意:静态成员函数与静态数据成员一样,也不是对象成员。静态成员函数的调用不同于普通的成员函数。在静态成员函数的实现中,引用类的非静态数据成员是通过对象进行的,如本题中s.A,引用类的静态数据成员是直接进行的,如本题中的B。
#include
class Sample
{
int x,y;
public:
Sample(){x=y=0;}
Sample(int a,int b){x=a;y=b;} void disp()
{
cout<<"x="<disp();
}
解:
本题说明对象指针数组赋初值方法。定义三个对象和一个对象指针数组,通过赋初值使后者的元素分别指向前面三个对象,然后使用for语句循环调用各个对象的disp()成员函数。所以输出为:
x=0,y=0
x=1,y=2
x=10,y=20
题7.分析以下程序的执行结果
#include
class Sample
{
int n;
static int sum;
public:
Sample(int x){n=x;}
void add(){sum+=n;}
void disp()
{
cout<<"n="< #include void swap(char *&x,char *&y) // 引用作为参数 {
char *temp;
temp=x;x=y;y=temp; }
void main()
{
char *ap="hello";
char *bp="how are you?"; cout<<"ap:"< void main()
{
int a[]={10,20,30,40},*pa=a;
int *&pb=pa;
pb++;
cout<<*pa<
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;} void disp(){cout<<"x="<
class Sample
{
int x,y;
public:
Sample(){x=y=0;}
Sample(int i,int j){x=i;y=j;} void copy(Sample &s);
void setxy(int i,int j){x=i;y=j;} void print(){cout<<"x="<要求