2013-11-25 28 views
3

我有以下程序C++不允許你從構造函數調用私有函數嗎?

#include <iostream> 

class Blah { 
    private: 
     void hello(); 
    public: 
     Blah(); 
}; 

void Blah::hello() { 
    std::cout << "Hello, world" << std::endl; 
} 

Blah::Blah() { 
    hello(); 
} 

int main() { 
    Blah a(); 
    return 0; 
} 

它編譯罰款,但是當我運行它,程序不打印「你好,世界」到控制檯,因爲我本來期望。爲什麼是這樣?

+1

再次......再次......再次......再次......(而這不是** MVP。) – 2013-11-25 17:23:14

回答

12
​​

這不會創建一個對象,它會聲明一個函數。將其更改爲

Blah a; 

這有時被稱爲「煩人的語法分析」。

相關問題