gpt4 book ai didi

c++ - 了解类构造函数的静态转换

转载 作者:行者123 更新时间:2023-12-02 10:07:56 25 4
gpt4 key购买 nike

我的问题是,我有一个程序使用静态将构造函数对象强制转换为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

最佳答案

I have a program that uses statically casts the constructor object to a char type.



没有所谓的“构造对象”。我想你的意思是……“对象”?

构造函数是成员函数的一种特殊类型。

The line is char c1 = static_cast<char>(Hazem). What happens here exactly?



您要求计算机实现的目标:在生成 operator char()时遵循 char中描述的步骤。这些步骤是:
  • 产生控制台输出“Conversion operator”
  • 返回转换为x的成员变量char的值

  • Also why does the line Hazem = static_cast<A>(a) have an output just by being called?



    同样,这就是您要求计算机执行的操作。使用 int的构造函数具有以下步骤:
  • 将成员x的值设置为参数i
  • 产生控制台输出“转换构造函数”
  • 产生控制台输出x

  • …然后 static_cast<A>(a)从参数 A(此处为 a)构造一个 int

    关于c++ - 了解类构造函数的静态转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59252067/

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