gpt4 book ai didi

c++ - 当需要显式转换而隐式转换不起作用时

转载 作者:行者123 更新时间:2023-11-30 01:44:46 27 4
gpt4 key购买 nike

当我有 2 个类实现了转换构造函数和转换运算符时,是否可能存在需要显式转换的情况,因为隐式将不起作用?(我以 2 类为例,看看继承是否有任何区别)

最佳答案

当可以隐式应用多个转换时,为了解决歧义,可能需要显式转换:

#include <iostream>
using namespace std;

void f(double x) {
cout << "Double\n";
}

void f(int x) {
cout << "Integer\n";
}

struct C
{
C(float x) { this->x = x; }
operator int() { return (int)x; }
operator double() { return (double)x; }
float x;
};

int main(int argc, char* argv[])
{
C c(1);
f(c); // error C2668: 'f' : ambiguous call to overloaded function
f(static_cast<double>(c)); // calls f(double)
f(static_cast<int>(c)); // calls f(int)
}

关于c++ - 当需要显式转换而隐式转换不起作用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527139/

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