序文:
最初に質問に答えましょう:参照データメンバーはC ++クラスで定義できますか?
答えは「はい」ですが、クラス内の参照はコンストラクタ初期化リストを介して初期化する必要があります。!!
参照メンバー変数はC ++クラスで定義できますが、次の3つのルールに従う必要があります。
- デフォルトのコンストラクターを使用して初期化することはできません。参照メンバー変数を初期化するコンストラクターを提供する必要があります。そうしないと、初期化されていない参照エラーが発生します。
- コンストラクターの仮パラメーターも参照型である必要があります
- コンストラクターの関数本体に値を割り当てることはできません(初期化とは言わないのですか?すべてのメンバー変数は初期化リストで完了しているため)、初期化リストで初期化する必要があります。
コンストラクターは、初期化と計算の2つの段階に分かれています。前者はメンバー初期化リンクリストに対応し、後者はコンストラクター関数本体に対応します。参照は、初期化フェーズ、つまりメンバー初期化リンクリストで完了する必要があります。そうしないと、コンパイル中にエラーが報告されます(参照は初期化されません)。
コード表示:
#include <iostream>
using namespace std;
class node
{
public:
node(int &target) :st(target)
{
cout << "lalala" << endl;
}
void printst()
{
cout << st << endl;
}
private:
int &st;
};
int main()
{
int op = 123;
node bk(op);
bk.printst();
return 0;
}