這是我做的事情相當普遍,當我編寫C++,我一直在琢磨,如果它是一個「壞」習慣一段時間(這種行爲是標準的嗎?)命名功能參數同級成員
可以說,我有一個類:
Class Foo {
public:
Foo(int x) {
//this->x is the member "x" of Foo
//x is the paramater "x" to the function
this->x = x; //Sets Foo::x to x (parameter x)
}
private:
int x;
};
請注意,在Foo::Foo(int x)
,該參數被命名爲x
這是相同的名稱作爲Foo
一個成員變量。
我通常只是使用use this->x = x;
來分配成員變量的參數值,這似乎對我(我通常使用MSVC)的工作。在MSVC(和我認爲的GCC)中,訪問x
將訪問名爲x
而不是名爲x
的成員。這是所有C++編譯器的標準化行爲嗎?是否有任何東西阻止編譯器將x
與成員變量而不是參數變量相關聯? (例如:this->x;
將相當於this->x = this->x;
)
您應該使用初始化程序列表,而不是進行分配。使用初始化程序列表,您只需初始化成員x。在你當前的代碼中x被初始化,然後參數x被分配給它,本質上你正在做2x工作。 –