一、概念题
1
.类和对象有什么区别和联系?/p>
类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一?/p>
的集合体。类是对某一类对象的抽象,而对象是某一种类的实例?/p>
2
.什么是类的实现?/p>
将类所有未编写函数体的成员函数在类体外全部编写出来?/p>
3
?/p>
this
指针的概念是什么?
类中所有的成员函数
(静态成员函数除外)
都隐含了第一个参数,
这个隐含的第一个参
数就?/p>
this
指针?/p>
在成员函数的实现代码中,
所有涉及对类的数据成员的操作都隐含为对
this
指针所指对象的操作?/p>
4
.为什么要引入构造函数和析构函数?/p>
构造函数的作用是为类对象的数据成员赋初值,构造函数在定义类对象时由系统自?/p>
调用?/p>
在一个对象死亡或者说退出生存期时,
系统会自动调用析构函数,
因此可以在析构函
数定义中,设置语句释放该对象所占用的一些资源?/p>
5
.什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动?/p>
成一个缺省的拷贝构造函数,它可能会产生什么问题?
当有用一个已经存在对象创建一个同类型的新对象的需求时?/p>
当对象含有指针数据成
员,
并用它初始化同类型的另一个对象时?/p>
默认的拷贝构造函数只能将该对象的数据成员?/p>
制给另一个对象,
而不能将该对象中指针所指向的内存单元也复制过去?/p>
这样?/p>
就可能出?/p>
同一内存单元释放两次,导致程序运行出错?/p>
6
.什么是堆对象?创建和回收堆对象的方法是什么?
堆区用来存放在程序运行期间,根据需要随时建立的变量(对象)
,建立在堆区的对?/p>
称为堆对象,当堆对象不再使用时,
应予以删除,
回收所占用的动态内存?/p>
创建和回收堆?/p>
象的方法是使?/p>
new
?/p>
delete
运算符?/p>
7
.为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么?
定义静态数据成员是为了同一个类的不同对象之间共享公共数据成员;
用关键字
static
可以把数据成员定义成静态数据成员;
在定义的类被使用前,
要对其中的静态数据成员进?/p>
初始化,初始化时不必添加关键?/p>
static
?/p>
8
.什么是静态成员函数?静态成员函数和非静态成员函数有什么区别?
用关键字
static
可以把这成员函数定义成静态成员函数?/p>
?/p>
静态成员函数只能访问类的静态数据成员,不能访问类的非静态数据成员。因为静态成
员函数是类的成员,不涉及具体的对象,访问静态成员函数常用类名引导?/p>
?/p>
非静态成员函数可以访问类的静态数据成员,也可以访问非静态数据成员。因为类的静
态成员总是存在的?/p>
?/p>
静态成员函数和非静态成员函数,最主要的差别是非静态成员函数隐含了第一个参?/p>
this
指针,静态成员函数不?/p>
this
指针?/p>
9
.结?/p>
struct
和类
class
有什么异同?
struct
?/p>
class
都可以定义类?/p>
但是缺省访问权限说明时,
struct
的成员是公有的,
?/p>
class
的成员是私有的。在
C++
中,
struct
可被
class
代替?/p>
10
.比较类的三种继承方?/p>
public
?/p>
protected
?/p>
private
之间的区别?/p>
⑴采?/p>
public
公有派生,基类成员的访问权限在派生类中保持不变,即基类所?