返回具有成员变量的类对象



为什么函数test((即使我没有返回基类也能工作?编译会发生什么?有人能给我解释一下吗?

#include <iostream>
class Base {
public:
Base(){}
Base(int val): _val(val){};
~Base(){};
Base test(int n){
return (n);
}
int &operator *() { return (_val); };
private:
int _val;
};

int main()
{
Base base;
Base a;
a = base.test(42);
std::cout << *a << std::endl;
return (0);
}

您声明了一个接受int的构造函数,并声明test(int n)应始终返回一个Base类。编译器知道,为了创建Base对象,您不需要任何东西(默认构造函数(或int,因此它使用接受int并返回的构造函数来创建对象。

如果你想的话,你可以明确地说,做下面这样的事情,得到完全相同的行为:

Base test(int n){
return Base(n);
}

简而言之,n隐式转换为Base对象,因为您声明了一个只需要int的构造函数。

相关内容

  • 没有找到相关文章

最新更新