错题11
1.下列关于赋值运算符“=”重载的叙述中,正确的是
A 赋值运算符只能作为类的成员函数重载
B 默认的赋值运算符实现了“深层复制”功能
C 重载的赋值运算符函数有两个本类对象作为形参
D 如果己经定义了复制拷贝构造函数,就不能重载赋值运算符
用户如果没有显式定义,则编译器回生成默认的赋值运算符重载,默认为浅拷贝成员函数:形参列表一个参数,有一个隐藏的this拷贝构造函数与赋值运算符函数是两个不同的函数
编程题
错题12
1.下面关于类和对象的描述中,错误的是
A 类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B 类和对象之间的关系是抽象和具体的关系
C 对象是类的实例,一个对象必须属于一个已知的类
D 类是具有共同行为的若干对象的统一描述体
C语言中的结构体不能有函数,C++中的类不仅可以放数据,还可以放函数
2.如果有一个类是 myClass , 关于下面代码正确描述的是
myClass::~myClass(){
delete this;
this = NULL;
}
A 正确,我们避免了内存泄漏
B 它会导致栈溢出
C 无法编译通过
D 这是不正确的,它没有释放任何成员变量。
1.不能在析构函数中delete this
~A()
{
delete this;
}
上述代码可以通过编译,但运行时一定会崩溃
2.析构函数作用:对象销毁时,释放对象中资源的问题:并不是所有对象都是从堆上new出来的
3.this==NULL; this类型:类类型* const this ,this指针的指向不能被修改
3.请问以下说法,哪个是正确的
A 每个类都有一个无参数的构造函数。
B 每个类都有一个拷贝构造的函数。
C 每个类能有多个构造函数。
D 每个类能有多个析构函数。
在类中,如果用户没有显式定义任何构造函数,则编译器会自动生成一个无参的构造函数但是用户一旦定义,则编译器不再生成在类中,如果用户没有显式定义任何拷贝构造函数,则编译器会生成一个默认的拷贝构造函数,但是用户一旦显式定义,则编译器不再生成A(A&)=delete; //删除每个类只能有一个析构函数