コピーコンストラクタを書き換える必要があるのはいつですか
1071 ワード
1、ここには簡単なルールがあります.空でない構造関数を定義する必要がある場合は、通常、コピー構造関数を定義する必要があります.
2、1つの原則があります:一般的にあなたはクラスの中でnew操作を行って、あなたは構造関数を必要として、あなたが構造関数を必要とするクラスの中で、一般的にショルダー構造関数と賦値関数を加える必要があります.
3、コピーコンストラクタは、コンパイラによって呼び出され、同じクラスに基づく他のオブジェクトの構築と初期化を完了する特殊なコンストラクタです.その唯一のパラメータ(オブジェクトの参照)は可変ではありません(constタイプ).この関数は、関数呼び出し時にユーザー定義タイプの値が渡され、返される場合によく使用されます.コピーコンストラクション関数は、ベースクラスのコピーコンストラクション関数とメンバー関数を呼び出します.できれば定数で呼び出すほか、非常量で呼び出すこともできます.
C++では、次の3つのオブジェクトがコピーコンストラクタ(コピーコンストラクタとも呼ばれる場合があります)を呼び出す必要があります.
1)1つのオブジェクトが関数パラメータとして機能し、値が伝達されるように関数体に伝達される.
2)1つのオブジェクトが関数として値を返し、値が伝達されるように関数から返す.
3)あるオブジェクトは別のオブジェクトを初期化するために使用される(複製初期化と呼ばれることが多い).
通常の原則は、1動的割り当てメンバーまたはポインタメンバーを含むクラスに対してコピー構造関数を提供することである.②コピーコンストラクション関数を提供するとともに、"="割り当て操作記号の再ロードも考慮する必要があります.
2、1つの原則があります:一般的にあなたはクラスの中でnew操作を行って、あなたは構造関数を必要として、あなたが構造関数を必要とするクラスの中で、一般的にショルダー構造関数と賦値関数を加える必要があります.
3、コピーコンストラクタは、コンパイラによって呼び出され、同じクラスに基づく他のオブジェクトの構築と初期化を完了する特殊なコンストラクタです.その唯一のパラメータ(オブジェクトの参照)は可変ではありません(constタイプ).この関数は、関数呼び出し時にユーザー定義タイプの値が渡され、返される場合によく使用されます.コピーコンストラクション関数は、ベースクラスのコピーコンストラクション関数とメンバー関数を呼び出します.できれば定数で呼び出すほか、非常量で呼び出すこともできます.
C++では、次の3つのオブジェクトがコピーコンストラクタ(コピーコンストラクタとも呼ばれる場合があります)を呼び出す必要があります.
1)1つのオブジェクトが関数パラメータとして機能し、値が伝達されるように関数体に伝達される.
2)1つのオブジェクトが関数として値を返し、値が伝達されるように関数から返す.
3)あるオブジェクトは別のオブジェクトを初期化するために使用される(複製初期化と呼ばれることが多い).
通常の原則は、1動的割り当てメンバーまたはポインタメンバーを含むクラスに対してコピー構造関数を提供することである.②コピーコンストラクション関数を提供するとともに、"="割り当て操作記号の再ロードも考慮する必要があります.
#include
using namespace std;
class CExample {
private:
int a;
public:
//
CExample(int b)
{ a = b;}
//
CExample(const CExample& C)
{
a = C.a;
}
//
void Show ()
{
cout<