1. 下列关于类的构造函数和析构函数的叙述中,不正确的是________。
A.类的析构函数可以重载
B. 类的构造函数可以重载
C.定义一个类时,可以不显式定义构造函数
D. 定义一个类时,可以不显式定义析构函数
分析:析构函数不返回任何值,没有函数类型,也没有函数参数。由于没有函数参数,因此它不能被重载。一个类可以有多个构造函数,但只能有一个析构函数。
2. 下列说明中有关结构体定义的正确说法是________。
A.不能指定其成员的权限 B.不能包含成员函数
C.其成员缺省的权限为公有的 D.不能包含对象成员
分析:C语言中的结构体只能包含数据,而在C++中的结构体实际上就是类,能包含数据也能包含函数,其成员也可指定公有、私有。区别在于其成员未声明权限时,默认权限是public,结构体内也可以包括对象成员。3. 一个类的析构函数________。
A.是唯一的 B.允许重载 C.至多可有两个 D只能是缺省的
4. 下列有关类和对象的说法中,正确的是________。
A.类与对象没有区别
B.要为类和对象分配存储空间
C.对象是类的实例,为对象分配存储空间而不为类分配存储空间
D.类是对象的实例,为类分配存储空间而不为对象分配存储空间
分析:略。
5. 假定AB为一个类的类名,则该类的拷贝构造函数的函数原型是
A.AB &(AB X); B.AB (AB X) C.AB (AB & X) D.AB (AB * X)
分析:拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。
6. 下列各类函数中, 不是类的成员函数。
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
7. 一个类的友元函数能够访问该类的
A.私有成员
B.保护成员
C.公有成员
D.所有成员
8. 下述静态成员的特性中,错误的是
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员要在类体外重新定义并进行初始化
C.引用静态数据成员时,要在静态数据成员前加类名和作用域运算符
D.静态数据成员不是所有对象共有的
分析:静态数据成员是被类的所有对象共享,它不属于类的任何一个对象,它的作用域是类范围。静态数据成员在每个类对象中并不占有存储空间,它只是每个类中分配有存储空间,供所有对象公用。静态数据成员的值对每个对象都一样,但它的值可以被任何一个对象更新,从而实现了同一类的不同对象之间的数据共享。
9. 如下程序定义了一个时钟类:时钟类具有时、分、秒属性,具有设置和显示时间属性的公共接口函数,请根据自己的理解在________处填上相应的语句,并写出其输出结果_______________。
#include <iostream.h>
class clock
{
public:
void SetTime(int newh, int newm, int news);
void ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<"\n";
}
private:
int Hour, Minute, Second;
};
void clock::SetTime(int newh = 0, int newm = 0, int news = 0)
{
_Hour=newh______________;
_Minute=newm______________;
_Second=news______________;
}
void main()
{
clock myclock;
cout<<"first time set and output:\n";
myclock.SetTime();
myclock.ShowTime();
cout<<"second time set and output:\n";
clock _*temp=&myclock______________;
temp->SetTime(12, 56);
temp->ShowTime();
cout<<"third time set and output:\n";
temp->SetTime(8, 30, 30);
temp->ShowTime();
}
输出结果:
first time set and output:
0:0:0
second time set and output:
12:56:0
third time set and output:
8:30:30
10.读程序,写结果。
#include <iostream.h> class Point { public: Point(int xx = 0, int yy = 0) { X = xx; Y = yy; cout<<"调用构造函数\n"; } Point(Point &p); int GetX() { return X; } int GetY() { return Y; } private: int X,Y; }; Point::Point(Point &p) { X=p.X; Y=p.Y; cout<<"调用拷贝构造函数\n"; } void main() { Point A(3,4); Point B(A); cout<<B.GetX()<<endl; }输出结果:
调用构造函数
调用拷贝构造函数
3