重载特殊的一个:
void name() const; // 只能被const类型的对象调用
void name(); // 被一般的对象调用
是个重载的函数,重载可以以函数类型和个数,以及函数限制符(const)来区别重载的函数
C++自动提供了下面这些成员函数:
默认构造函数,如果没有定义构造函数
复制构造函数,如果没有定义
赋值操作符,如果没有定义
默认析构函数,如果没有定义
地址操作符,如果没有定义。
重载 << 操作符
定义下面友元
ostream & opeartor << (ostream & os, const c_name & obj)
{
os << ...;
return os;
}
复制构造函数的一般形式
class name(const classname &);
复制构造函数被调用的形式:
假设 A 是一个string对象
string B(A)
string C = A
string D = string(A)
string *E = new string(A);
还有每当编译器生成副本都调用复制构造函数。具体来说,当函数安值传递对象或函数返回对象时,调用复制构造函数。
赋值操作符的一般形式
c_name & c_name::operator = (const c_name & cn)
{
if(this == &cn)
return *this;
delete[] c_pointer; //释放原类中的指针指向的内容
c_pointer = new type_name[size];
......
return *this;
}
只有 A = B 才调用赋值操作符,而 string A = B 调用复制构造函数,一般不调用赋值操作符。