【发布时间】:2019-12-09 15:33:50
【问题描述】:
我的问题是,我有一个程序使用静态将构造函数对象转换为char 类型。该线路是char c1 = static_cast<char>(Hazem)。这里到底发生了什么?另外,为什么Hazem = static_cast<A>(a) 行只是被调用就有输出?
谢谢
class A {
int x;
public:
A(int i) {
x = i;
cout << "Conversion constructor" << endl;
cout << x << endl;
}
operator char()
{
cout << "Conversion operator" << endl;
return char(x);
}
};
int main() {
A Hazem(65);
Hazem = 66;
char c1 = static_cast<char>(Hazem);
cout << c1 << endl;
int a = 30;
Hazem = static_cast<A>(a);
return 0;
}
程序输出
Conversion constructor
65
Conversion constructor
66
Conversion operator
B
Conversion constructor
30
【问题讨论】:
-
空格对编译器来说可能无关紧要,但对人类来说却很重要。共享代码时,请确保其格式尽可能易于阅读。
-
你知道
static_cast是什么,它有什么作用吗? -
您知道
A类的operator char()成员做什么以及何时调用它吗?