是否有可能在对象上定义自定义强制转换以成为方法调用的结果?



是否可以在对象上定义自定义强制转换,以便对象强制转换为方法调用的结果?

class Foo {
public:
...
int method() { return 3; }
};
Foo foo;
int bar = foo + 7; // 10

您可以提供转换函数如下所示:

方法1

直接返回一个int,在转换函数中不使用method

class Foo {
public:
//conversion function
operator int()
{
return 3;
}
};
Foo foo;
int bar = foo + 7; // bar is initialized with 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}

演示或

方法2

使用method从转换函数内部返回一个int

class Foo {
public:

int method() { return 3; }

operator int()
{
return method();
}
};
Foo foo;
int bar = foo + 7; // 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}

啊。我想太多了。

#include <iostream>
#include <string>
class Foo {
public:
Foo() { _data = 3; }
int method() { return _data; }
operator int() {
return method();
}
int _data;
};
int main()
{
Foo foo;
int bar = foo + 7;
std::cout << bar << std::endl;
}

最新更新