#include
using namespace std;
//定义类
class Person
{
private:
int m_Age;
public:
//定义默认构造函数
Person()
{
cout << "默认构造函数!" << endl;
}
//定义有参构造函数
Person(int age)
{
m_Age = age;
cout << "有参构造函数!" << endl;
}
//定义拷贝构造函数
Person(const Person& p)
{
m_Age = p.m_Age;
cout << "拷贝构造函数!" << endl;
}
~Person()
{
cout << "析构函数!" << endl;
}
};
//定义返回值为Person的函数
Person func()
{
Person p(10);
return p;
}
int main()
{
func()= 10;//调用func函数,并将它的返回值作为左值
system("pause");
return 0;
}
我用的vs2019
输出结果为:
有参构造函数!
有参构造函数!
拷贝构造函数!
析构函数!
析构函数!
析构函数!
这是为什么?
还有就是返回值作为左值的问题,c++提供的默认数据类型作为返回值时
不能作为左值,用户自定义数据类型可以,有什么要求和注意事项吗?