考虑类foo与两个这样定义的构造函数:
class foo { public: foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;} foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;} };
foo a ("/path/to/file");
输出:
ctor 2
我不知道你,但我没有发现编程历史上最直观的行为.我敢打赌,有一些聪明的理由,但是,我想知道这可能是什么?
解决方法
在C写这个很常见
void f(T* ptr) { if (ptr) { // ptr is not NULL } }
你应该使一个const char *构造函数.