C++ 类和动态内存分配

重载特殊的一个:

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  调用复制构造函数,一般不调用赋值操作符。

你可能感兴趣的:(笔记,内存分配,复制构造函数,赋值操作符,C++Primer,转换函数)