閱讀 Poco C++ 庫源碼時發現類中定義了 main 成員函數,初見困惑。經驗證,這只是普通成員函數碰巧命名為 main,與程序入口 int main() 無關。C++ 允許類成員函數名為 main,只需注意作用域區分。
示例代碼
#include <iostream>
#include <cstdio>
using namespace std;
class Test {
public:
int main() { // 類的成員函數名為 main
puts("Test::main hehe");
return 0;
}
};
int main() { // 全局程序入口
Test x;
x.main(); // 調用成員函數
return 0;
}
輸出
Test::main hehe
說明
main 只是普通函數名,無特殊含義。int main() 才是程序入口,由運行環境調用。main() 供用戶繼承覆寫,框架入口調用該虛函數實現「好萊塢原則」(Don't call us, we'll call you)。所以看到類中有 main 不必驚訝,理解其上下文即可。