請注意,Derived
類的構造函數具有ii
作爲其第一個參數,但傳遞給Base
的參數故意等於i
。爲什麼編譯器不會在Derived類構造函數的定義中抱怨?
class Base
{
protected:
int i;
public:
Base(int i) : i(i) {}
};
class Derived : public Base
{
private:
int k;
public:
Derived(int ii, int k) : Base(i), k(k) {} // Why not C2065: 'i' undeclared identifier
};
int main()
{
}
當然編譯器在這裏有足夠的信息來知道代碼正在使用單位化變量。它並沒有抱怨,因爲開發團隊決定用他們的寶貴工時來開發其他東西,而不是這個(比如VS2010中的一些C++ 11支持)。 –