C++クラスとダイナミックメモリの割り当て


特殊な1つを再ロードします.
void  name() const;//constタイプのオブジェクトのみに呼び出されます
void  name();//一般的なオブジェクトに呼び出される
リロードされた関数で、リロードは関数のタイプと個数、および関数制限子(const)でリロードされた関数を区別できます.
C++は、次のメンバー関数を自動的に提供します.
デフォルトのコンストラクション関数、コンストラクション関数が定義されていない場合
定義されていない場合は、コンストラクション関数をコピーします.
[割り当て](Assign)オペレータが定義されていない場合
デフォルトの解析関数が定義されていない場合
定義されていない場合は、アドレスオペレータ.
リロード<<オペレータ
次の友元を定義
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はレプリケーションコンストラクタを呼び出し、一般的には割り当てオペレータは呼び出されません.