C++クラスとダイナミックメモリの割り当て
1261 ワード
特殊な1つを再ロードします.
void name() const;//constタイプのオブジェクトのみに呼び出されます
void name();//一般的なオブジェクトに呼び出される
リロードされた関数で、リロードは関数のタイプと個数、および関数制限子(const)でリロードされた関数を区別できます.
C++は、次のメンバー関数を自動的に提供します.
デフォルトのコンストラクション関数、コンストラクション関数が定義されていない場合
定義されていない場合は、コンストラクション関数をコピーします.
[割り当て](Assign)オペレータが定義されていない場合
デフォルトの解析関数が定義されていない場合
定義されていない場合は、アドレスオペレータ.
リロード<<オペレータ
次の友元を定義
コンストラクション関数の一般的な形式のコピー
class name(const classname &);
レプリケーションコンストラクション関数が呼び出される形式:
Aがstringオブジェクトであると仮定
string B(A)
string C = A
string D = string(A)
string *E = new string(A);
また、コンパイラがレプリカを生成するたびに、レプリケーションコンストラクタが呼び出されます.具体的には、関数安値伝達オブジェクトまたは関数がオブジェクトを返すと、複製コンストラクタが呼び出されます.
割り当てオペレータの一般的な形式
割り当てオペレータは、A=Bのみが呼び出され、string A=Bはレプリケーションコンストラクタを呼び出し、一般的には割り当てオペレータは呼び出されません.
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はレプリケーションコンストラクタを呼び出し、一般的には割り当てオペレータは呼び出されません.