一、 填空题
- 类定义中关键字private、public和protected以后的成员的访问权限分别是 私有、公有 和 保护。如果没有使用关键字,则所有成员默认定义为 private 权限。具有 public 访问权限的数据成员才能被不属于该类的函数所直接访问。
- 定义成员函数时,运算符“∷”是 作用域 运算符,“MyClass∷”用于表明其后的成员函数是在“MyClass类”中说明的。
- 在程序运行时,通过为对象分配内存来创建对象。在创建对象时,使用类作为样板,故称对象为类的实例。
- 假定Dc是一个类,则执行“Dc a[10],b(2)”语句时,系统自动调用该类构造函数的次数为11。
- 对于任意一个类,析构函数的个数最多为1个。
- delete运算符通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。
- C++程序的内存格局通常分为4个区: 数据区、代码区、栈区和堆区。
- 数据定义为全局变量,破坏了数据的 封装性; 较好的解决办法是将所要共享的数据定义为类的 静态成员。
- 静态数据成员和静态成员函数可由 任意访问权限许可的函数访问。
- 友元函数 和 友元类 统称为友元。
- 友元的正确使用能提高程序的效率,但破坏了类的封装性和数据的隐蔽性。
- 若需要把一个类A定义为一个类B的友元类,则应在类B的定义中加入一条语句: friend class A;。
二、 选择题(至少选一个,可以多选)
- 以下不属于类访问权限的是( B )。
A. public
B. static
C. protected
D. private - 有关类的说法不正确的是( BC )。
A. 类是一种用户自定义的数据类型
B. 只有类的成员函数才能访问类的私有数据成员
C. 在类中,如不做权限说明,所有的数据成员都是公有的
D. 在类中,如不做权限说明,所有的数据成员都是私有的 - 在类定义的外部,可以被任意函数访问的成员有( C )。
A. 所有类成员
B. private或protected的类成员
C. public的类成员
D. public或private的类成员 - 关于类和对象的说法( C )是错误的。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D. 类与对象的关系和数据类型与变量的关系相似 - 设MClass是一个类,dd是它的一个对象,pp是指向dd的指针,cc是dd的引用,则对成员的访问,对象dd可以通过( B )进行,指针pp可以通过( D )进行,引用cc可以通过( B )进行。
A. ∷
B. .
C. &
D. -> - 关于成员函数的说法中不正确的是( C )。
A. 成员函数可以无返回值
B. 成员函数可以重载
C. 成员函数一定是内联函数
D. 成员函数可以设定参数的默认值 - 下面对构造函数的不正确描述是( B )。
A. 系统可以提供默认的构造函数
B. 构造函数可以有参数,所以也可以有返回值
C. 构造函数可以重载
D. 构造函数可以设置默认参数 - 假定A是一个类,那么执行语句“A a,b(3),*p; ”调用了( B ) 次构造函数。
A. 1
B. 2
C. 3
D. 4 - 下面对析构函数的正确描述是( AC )。
A. 系统可以提供默认的析构函数
B. 析构函数必须由用户定义
C. 析构函数没有参数
D. 析构函数可以设置默认参数 - 类的析构函数是( D )时被调用的。
A. 类创建
B. 创建对象
C. 引用对象
D. 释放对象 - 创建一个类的对象时,系统自动调用( B ); 撤销对象时,系统自动调用( C )。
A. 成员函数
B. 构造函数
C. 析构函数
D. 复制构造函数 - 通常拷贝构造函数的参数是( C )。
A. 某个对象名
B. 某个对象的成员名
C. 某个对象的引用名
D. 某个对象的指针名 - 关于this指针的说法正确的是( B )。
A. this指针必须显式说明
B. 当创建一个对象后,this指针就指向该对象
C. 成员函数拥有this指针
D. 静态成员函数拥有this指针。 - 下列关于子对象的描述中,( B )是错误的。
A. 子对象是类的一种数据成员,它是另一个类的对象
B. 子对象可以是自身类的对象
C. 对子对象的初始化要包含在该类的构