は、私の知る限りでは、「この」ポインタは、以下のようにコンパイラによって関数に挿入されたパラメータである。ところで"this"ポインタをフィールドにどのように割り当てることが可能ですか?
class Sample {
private:
int a;
public:
void setA(int a) {
this->a = a;
}
};
Sample ob;
ob.setA(5); -> ob.setA(&ob, 5);
class Sample {
private:
int a;
public:
void setA(Sample* this, int a) {
this->a = a;
}
};
、私はCONSTフィールドに「この」ポインタを割り当てることを何か混乱のコードを発見しました。 (下記参照)
class Test {
int data;
public:
Test* const test = this;
Test(int data = 1) : data(data) { }
Test(Test &test) : data(test.data) { }
};
(It has no compile Errors and runs well!)
"this"ポインタが関数経由で伝達されているのであれば、どのようにすることができますか? 私は考えていません.. いくつかのアドバイスをお願いします。私はあなたのすべての応答に感謝しています。
あなたはどのような問題を解決しようとしていますか? –
等号は必ずしも代入を意味するものではありません。文脈によっては、さまざまな意味があります。この場合、「初期化」を意味します。 –
const変数に値を "代入"する別の方法があります: 'const int a = 5;' –