我正在尝试理解static_cast.我有两个课程From和To.我正在尝试将From转换为To.我有一个构造函数要的是需要从.我还有一个用户定义的转换运算符,用于将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);
}
Run Code Online (Sandbox Code Playgroud)
"因为标准是这么说的"对你来说是一个有效的答案吗?
static_cast<T>(e)T t(e);与t演员的结果具有相同的效果.这遵循直接初始化的规则,该规则在考虑用户定义的转换序列之前通过重载解析来考虑适用的构造函数.
如果能让您放心,我可以提供相关的标准报价.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |