[閒聊] 使用預設參數建構子當成預設建構子引發的問題

看板C_and_CPP (C/C++)作者 (克里斯)時間16年前 (2009/04/12 12:51), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
這邊有個程式例子,輸出確是0? #include <iostream> using namespace std; class foo { public: int m_a; inline foo(int a = int()): m_a(a) {} }; inline void test(const foo& f = foo()) { cout << f.m_a << endl; }; int main(int argc, char* argv[]) { foo O(10); test(0); system("pause"); return 0; } test(0);本來該打成歐卻打成零 編譯器編譯成功,編譯器把 零 -> foo(零) 帶入副函數裡 輸出當然就變0了 該如何避免這類的問題? 1.全面取消預設參數建構子? 2.引入匈牙利命名法(變數名稱自帶型別辨識符號)? 3.還有其他辦法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.88.23

04/12 13:15, , 1F
我可以推換個字型嗎....
04/12 13:15, 1F
文章代碼(AID): #19uND2HN (C_and_CPP)
文章代碼(AID): #19uND2HN (C_and_CPP)