对于拷贝初始化构造函数,正确的描述是()
A.在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数
B.必须为每个类定义拷贝初始化构造函数
C.如果要使用拷贝初始化构造函数,则必须在类中先定义
D.当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造
E.函数
A.在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数
B.必须为每个类定义拷贝初始化构造函数
C.如果要使用拷贝初始化构造函数,则必须在类中先定义
D.当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造
E.函数
A.创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数
B.拷贝构造函数是可以重截
C.用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用
D.用一个对象初始化另一个对象时,拷贝构造函数会被自动调用
A.MyClass&(MyClass x)
B.MyClass(MyClass x)
C.MyClass(MyClass &x)
D.MyClass(MyClass *x)
根据下面类中拷贝构造函数的原型写出它的类外定义。
classArray{
int*a;//指向动态分配的整型数组空间
intn;//记录数组长度
public:
Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,
//利用aa数组初始化a所指向的数组空间
Array(Array&aa);//拷贝构造函数
Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this
ArrayUion(Array&aa);//实现*this和aa中的数组合并的
//功能,把合并结果存入临时对象并返回
intLenth(){returnn;}//返回数组长度
voidPrint(){//输出数组
for(inti=0;i<n;i++)
cout<<a[i]<<'';
cout<<endl;
}
};
A.若A类中有B类对象成员则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
B.如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
C.可以在构造函数的函数体中给出对象成员的初始化
D.可以在构造函数的初始化列表中给出对象成员的初始化
根据下面类中Give 函数的原型和注释写出它的类外定义。
class Strings {
char *s; // 指向动态分配的字符串数组空间
int n; // 记录字符串长度
public:
Strings(char*str); // 构造函数,利用str 字符串长度初始化n,
// 利用str 字符串初始化s 所指的字符串空间
Strings(Strings& str); // 拷贝构造函数
Strings& Give(Strings& str); // 实现str 赋值给*this 的功能并返回*this
Strings Uion(Strings& str); // 实现*this 和str 中的字符串合并的
// 功能,把合并结果存入临时对象并返回
int Lenth() {return n;} // 返回字符串长度
void Print() {cout<<s<<endl;} // 输出字符串
};
A.与成员对象在类中声明的顺序相同
B.与成员对象的析构函数的调用顺序相同
C.与成员对象在初始化列表中的初始化顺序相同
D.与成员对象在构造函数体中被调用的顺序相同