是否可以在对象上定义自定义强制转换,以便对象强制转换为方法调用的结果?
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;
}