赋值运算符重载函数与拷贝构造函数的区别是什么()。
A.都是拷贝一个类的对象给另一个同类型的类的对象
B.赋值运算符重载函数要把一个已存在对象的各成员的当前值赋给另一个已存在的同类对象
C.拷贝构造函数是用已存在的对象的各成员的当前值来创建一个相同的新对象
A.都是拷贝一个类的对象给另一个同类型的类的对象
B.赋值运算符重载函数要把一个已存在对象的各成员的当前值赋给另一个已存在的同类对象
C.拷贝构造函数是用已存在的对象的各成员的当前值来创建一个相同的新对象
第2题
A.赋值运算符和下标运算符只能重载为类的友元函数
B.赋值运算符重载时一般以引用方式返回*this,表示返回赋值运算符的左操作数
C.赋值运算符合下标运算符只能重载为类的成员函数
D.使用重载的赋值运算符时,左操作数一定是自定义类型
第3题
A.创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数
B.拷贝构造函数是可以重截
C.用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用
D.用一个对象初始化另一个对象时,拷贝构造函数会被自动调用
第4题
编写类String 的构造函数、析构函数和赋值函数和测试程序。
已知类String 的原型为:
#include
#include
class String
{public:
String(const char *str=NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~String(); // 析构函数
String & perator=(const String &other); // 赋值函数
void show()
{cout<< m_data<< endl;
}
private:
char *m_data; // 用于保存字符串
};
第6题
根据下面类中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;} // 输出字符串
};
第10题
A.operator+有2个参数,operator*有2个参数
B.operator+有2个参数,operator*有1个参数
C.operator+有1个参数,operator*有2个参数
D.operator+有1个参数,operator*有1个参数