类成员是可以分配在栈中的,依然可以返回这些成员的引用,不会执行复制操作。
class AName
{
private:
int age;
public:
AName(int _age) : age(_age)
{
std::cout << "执行AName构造函数" << std::endl;
}
AName(const AName& n)
{
age = n.age;
std::cout << "执行复制构造函数" << std::endl;
}
AName& operator=(const AName& n)
{
std::cout << "执行operator=方法" << std::endl;
return *(new AName(n.age));
}
};
class People
{
private:
AName aname;
public:
People(int age) : aname(AName(age))
{
}
~People()
{
std::cout << "~People销毁" << std::endl;
delete &aname;
}
AName& getAName()
{
std::cout << "aname的地址: " << &aname << std::endl;
return aname;
}
};
int main()
{
People p = People(33);
AName& n2 = p.getAName();
std::cout << "n2的地址:" << &n2 << std::endl;
std::cin.get();
return 0;
}控制台输出:
执行AName构造函数 aname的地址: 004FF6F0 n2的地址:004FF6F0