作者chrisdar (克里斯)
看板C_and_CPP
标题[闲聊] 使用预设参数建构子当成预设建构子引发的问题
时间Sun Apr 12 12:51:13 2009
这边有个程式例子,输出确是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
1F:→ ewn:我可以推换个字型吗.... 04/12 13:15