c++ - 为什么调用这个构造函数?

标签 c++

我对以下程序为什么调用第一个构造函数感到困惑。

class A  
{  
public:  
        A(const char *c="\0")  
        {  
                cout<<"Constructor without arg";  
        }  
        A(string c)  
        {  
                cout<<"New one";  
        }  

};  

int main()  
{  
        A a="AMD";  
        return 0;  
}  

输出是 不带参数的构造函数

最佳答案

"AMD" 是一个const char[],隐式转换为const char*,所以第一个构造函数[A(const char *c="\0")]是最佳匹配。

请注意 A(const char *c="\0") 不是一个没有参数的构造函数,它是一个接受单个 const 的构造函数char* 作为参数,并且在未指定 const char* 时使用可选的默认值。在本例中,您传递的是 const char*,因此它会使用它。

关于c++ - 为什么调用这个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516560/

相关文章:

c++ - OpenCV SVM 参数的推荐值

c++ - 在 Windows 中更改原始波形数据的音高

c++ - Qt 项目的 Netbeans "-O3"优化

c++ - 如何使用带多线程的 SAPI 将文本转换为 Wave?

c++ - 如何在C++中获取通过引用传递的值的值

c++ - operator>> 重载的显式实例化

c++ - 我的VS Code终端无法显示任何内容或给我一个错误。不知道为什么不打印

c++ - 拷贝构造函数怎么写?

c++ - 绕过 Eigen 静态断言

c++ - 从 QListWidget 获取完整路径