這個代碼編譯和運行沒有出錯時:爲什麼我可以從全局範圍調用私有構造函數?
class foo{
static foo *ref;
foo(){}
public:
static foo *getRef(){
return ref;
}
void bar(){}
};
foo* foo::ref = new foo; // the construcrtor is private!
int main(int argc, const char *argv[])
{
foo* f = foo::getRef();
f->bar();
return 0;
}
有人能解釋爲什麼能構造被稱爲?
的確,用'foo * ref = new foo;'(注意不存在'foo ::')來替換表達式來獲得編譯器錯誤! –