c++ - 带有 bool 参数的构造函数总是使用 _T ("..."调用)?

标签 c++ unicode constructor

我的程序出现奇怪的行为。 我写了一个总是失败的测试。 调试时我看到了一些我不明白的东西:

我有多个构造函数,但如果我通过 _T() 传递 unicode,这个构造函数总是被调用:

IsNullable(bool isNullable)
    : m_bIsNullabe(isNullable), Flag(eNullAllowed)
{};

这是我调用构造函数的方式:

... = new IsNullable(_T("N"));

奇怪的是,上面的 bool 构造函数总是被调用...
为什么会这样?如果有人知道我会很高兴!

贪婪, 克莱门斯

编辑:

应该调用此构造函数:

IsNullable(wchar_t isNullable)
    : Flag(eNullAllowed)
{...};

最佳答案

要调用的构造函数采用 wchar_t 字符,而不是指向宽字符串的指针。称它为:

IsNullable( L'N' );

请注意,我没有使用 _T 宏,因为您的构造函数参数类型是 wchar_t 并且它不是基于 UNICODE 是否是符号被定义。所以在这种情况下不需要那个宏。

调用另一个构造函数的原因是因为 const wchar_t[2] 类型的字符串文字(假设 _T 宏扩展为 L"N"),衰减为 const wchar_t *,然后隐式转换为 bool

关于c++ - 带有 bool 参数的构造函数总是使用 _T ("..."调用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822730/

相关文章:

c++ - 在每个实例的唯一虚拟 int type() 中使用静态转换来提高性能是否安全?

perl - 如何反转 Perl 中包含组合字符的字符串?

java - 通过复制构造函数在 Java 中复制对象而不影响原始对象

css - 在 Windows XP 中显示 Unicode 符号。也许网络字体?

python - 用表中的单个 unicode 替换字母数字子字符串

c++ - 显式调用构造函数

java - 这是什么类型的 Java 构造函数调用?

c++ - 如何附加到彼此相邻的十六进制值然后显示

c++ - 如何判断路径是文件还是没有提升权限的目录

c++ - 如何使用 CImg.h 库在另一张图片上显示一张图片?