gpt4 book ai didi

c++ - 为什么构造函数优先于用户定义的运算符?

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:26 24 4
gpt4 key购买 nike

我正在尝试理解 static_cast。我有两个类(class) FromTo。我正在尝试将 From 转换为 To。我有一个 To 的构造函数,它采用 From。我还有一个用户定义的转换运算符,用于将 From 对象转换为 To。为什么构造函数优先于赋值运算符?

class From;
class To
{
public:
int y;
To() { cout << "In To default constructor" << endl; }
To(const To& sl2) { cout << "In To copy constructor" << endl; }
void operator=(const To& sl2) { cout << "In To assignment operator" << endl; }
~To() { cout << "In To destructor" << endl; }
To(const From& sl1) { cout << "In From-To constructor" << endl;}
};

class From
{
public:
int x;
From() { cout << "In From default constructor" << endl; }
From(const From& sl2) { cout << "In From copy constructor" << endl; }
void operator=(const From& sl2) { cout << "In From assignment operator" << endl; }
~From() { cout << "In From destructor" << endl; }
operator To() const { cout << "Converting From to To" << endl; return To(); }
};

int _tmain(int argc, _TCHAR* argv[])
{
From from;
To to;
to = static_cast<To>(from);
}

最佳答案

“因为标准这么说”对你来说是一个有效的答案吗?

static_cast<T>(e)T t(e); 效果相同与 t是类型转换的结果。这遵循直接初始化的规则,它在考虑用户定义的转换序列之前通过重载决议考虑适用的构造函数。

如果您放心,我可以提供相关的标准报价。

关于c++ - 为什么构造函数优先于用户定义的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181616/

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