gpt4 book ai didi

c++ - C++中从用户定义类型到原始类型的隐式转换

转载 作者:可可西里 更新时间:2023-11-01 17:13:05 25 4
gpt4 key购买 nike

我能够找到大量关于从 int 到用户定义类型的隐式转换的信息。即,如果构造函数将 int 作为其参数并且没有以“显式”开头,则可能会发生隐式转换。

如果我希望我的类将 隐式转换为 一个 int 怎么办?

例如,需要在 SimpleClass 内部或外部添加什么函数,以便 main 函数编译并向控制台输出“1”? (见评论)

#include <iostream>

class SimpleClass
{
private:
int m_int;
public:
SimpleClass(int value)
: m_int(value) {}
};

int main(int argc, const char * argv[])
{
SimpleClass simpleclass(1);
int i = simpleclass; // does not complile
std::cout << i << std::endl; // should output "1" to the console
return 0;
}

最佳答案

隐式转换可以通过两种方式定义:

  • 非显式单参数构造函数。
  • 非显式转换函数(又名转换运算符),N3337 12.3.2

后者允许定义从类类型到原始类型的转换。只需添加

class SimpleClass {
// ...
operator int() const;
};

SimpleClass::operator int() const
{
return m_int;
}

关于c++ - C++中从用户定义类型到原始类型的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819752/

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