分享

C++ 匿名对象的使用

 雪柳花明 2016-11-15
#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;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多