如何解决c ++为什么这样工作:cout << obj +class_namea << endl;
我是编程新手,并且已经开始学习c ++课程。但是我被困在关于转换构造函数和重载运算符的讲座中。所以我想问一个关于以下代码的问题:
#include <iostream>
using namespace std;
class Integer
{
public:
Integer(){};
Integer(int);
int getNr();
operator int();
private:
int nr;
};
int main()
{
Integer obj(5);
int a = 20;
cout << obj + a << endl; // prints 25
return 0;
}
Integer::Integer(int nr)
{
this->nr = nr;
}
int Integer::getNr()
{
return this->nr;
}
Integer::operator int()
{
return this->nr;
}
从到目前为止我所了解的是,当执行行cout << obj + a << endl;
时,发生了类似cout << obj + (Integer)a << endl;
的事情,然后两个操作数都返回'nr'值。
有人可以向我解释一下背景中发生了什么吗?
转换构造函数是否将'a'作为参数并使用它创建对象?
然后operator int();
将在两个对象中都执行以返回'nr'?
对不起,如果我的问题听起来很傻,我是编程新手,我想了解其背后的逻辑。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。