构造函数调用中的Ambigious类型转换

时间:2016-08-15 11:10:31

标签: c++

class String {
public:
    String(int n); // allocate n bytes to the String object
    String(const char *p); // initializes object with char *p
};

现在下面的代码

String mystring = 'x';

这将调用String(int n)而不是String(const char *)。 为什么即使我传递一个const char *也会发生类型转换?我知道一个明确的解决了这个问题,但为什么即使我传递了正确的类型,类型转换首先发生?

2 个答案:

答案 0 :(得分:4)

您没有传递const char *。您正在传递char

你打算写:

String mystring = "x";

答案 1 :(得分:2)

'x'属于charcharint的转化效果优于charconst char*。使用双引号创建字符串文字。