作业一 类与对象
1 知识要点
1. 掌握类与对象的概念和定义方法,掌握类成员的访问属性。 2. 掌握构造函数的概念、定义方法和使用方法。 3. 掌握析构函数的概念、定义方法和使用方法。 4. 掌握拷贝构造函数的概念、定义方法和使用方法。
2典型例题
例题1:下列有关类的说法不正确的是( )。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类 C. 一个类只能有一个对象
D. 类与对象的关系和数据类型与变量的关系相似 答案:C
分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
例题2:下面( )项是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X() B.X::X(参数), X::~X() C.X::X(参数), X::~X(参数) D.void X::X(参数), void X::~X(参数) 答案:B
分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。
例题3:( )的功能是对象进行初始化。
A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数 答案:C
分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;
例题4:下列表达方式正确的是( )。
A.class
P{ B. class P{ public:
public:
int
x=15; int x; void show(){cout< }; } C. class P{ D. class P{ int f; public: }; int a; f=25; void Seta (int x) {a=x;} }; 答案:D 分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。 例题5: 拷贝构造函数具有的下列特点中,( )是错误的。 A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的 B. 拷贝构造函数只有一个参数,并且是该类对象的引用 C. 拷贝构造函数是一种成员函数 D. 拷贝构造函数的名字不能用类名 答案:D 分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 例题6:设有如下程序结构: class Box { … }; void main() {Box A,B,C; } 该程序运行时调用 (1) 次构造函数;调用 (2) 次析构函数。 答案:(1)3 (2)3 分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。 例题9:设A为test类的对象且赋有初值,则语句test B(A); 表示 。 答案:将对象A复制给对象B。 分析:执行test B(A);语句相当于调用了默认复制构造函数,将A对象的属性复制给B对象。 例题11:分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。 #include void main() {one data(2,3); cout< 分析:出错原因:构造函数参数表语法错;构造函数没有函数体;类的对象不能直接访问类的私有成员变量。 改正后的程序如下: #include one(int x1=0, int x2=0) {a1=x1;a2=x2;} int geta1() { return a1; } int geta2() { return a2; } }; void main() {one data(2,3);
相关推荐: