#include "iostream"
using namespace std;
class Location
{
public:
Location(int xx = 0, int yy = 0)
{
X = xx; Y = yy; cout << "构造函数Constructor Object.\n";
}
Location(const Location & p) //复制构造函数
{
X = p.X; Y = p.Y; cout << "拷贝构造函数Copy_constructor called." << endl;
}
~Location()
{
cout << X << "," << Y << "析构 Object destroyed." << endl;
}
int GetX() { return X; } int GetY() { return Y; }
private: int X, Y;
};
//alt + f8 排版
void f(Location p)
{
cout << "Funtion:" << p.GetX() << "," << p.GetY() << endl;
}
Location g()
{
Location A(1, 2);//此时创建一个对象,构造函数
return A;//执行析构函数
//返回值是个Location的匿名对象,关键是怎么接?
}
//对象初始化操作 和 =等号操作 是两个不同的概念
//匿名对象的去和留,关键看,返回时如何接
void main()
{
//若返回的匿名对象,赋值给另外一个同类型的对象,那么匿名对象会被析构
Location B;//1默认构造函数
B = g(); //用匿名对象 赋值 给B对象,然后匿名对象析构
/*
两次构造,一次拷贝构造,两次析构。
**/
//若返回的匿名对象,来初始化另外一个同类型的对象,那么匿名对象会直接转成新的对象
Location C = g();
/*1次构造,一次拷贝构造,1次析构。*/
cout << "传智扫地僧测试" << endl;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。