gpt4 book ai didi

c++ - 重载 boolean/字符串歧义

转载 作者:可可西里 更新时间:2023-11-01 15:38:12 31 4
gpt4 key购买 nike

为什么 C++ 将我传入的字符串文字转换为 boolean 值而不是字符串?

#include <iostream>

using namespace std;

class A
{
public:
A(string v)
{
cout << v;
}

A(bool v)
{
cout << v;
}
};

int main()
{
A("hello");
return 0;
}

输出:1

是不是因为编译器不够聪明,无法从 char * 跳转到 string 而只是假设 bool 是最接近指针的东西?我唯一的选择是制作一个基本上与字符串构造函数完全相同的显式 char * 构造函数吗?

最佳答案

如果你有 C++11,你可以使用委托(delegate)构造函数:

A(char const* s) : A(std::string(s)) { }

选择 boolean 转换构造函数而不是 std::string 的原因是因为从 char const*bool 的转换> 是标准转换,而 std::string 是用户定义的转换。标准转化的排名高于用户定义的转化。

关于c++ - 重载 boolean/字符串歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413951/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com