zoukankan      html  css  js  c++  java
  • 关于析构函数,构造函数匿名对象的总结,以厚忘了,可以回来观看很全

    //对象做函数参数
    //1 研究拷贝构造 
    //2 研究构造函数,析构函数的调用顺序
    
    //总结 构造和析构的调用顺序
    
    #include "iostream"
    using namespace std;
    
    class ABCD 
    {
    public:
    	ABCD(int a, int b, int c)//有参构造函数
    	{
    		this->a = a;
    		this->b = b;
    		this->c = c;
    		printf("ABCD() construct, a:%d,b:%d,c:%d  
    ", this->a, this->b, this->c);
    	}
    	~ABCD()//析构函数
    	{
    		printf("~ABCD() construct,a:%d,b:%d,c:%d  
    ", this->a, this->b, this->c);
    	}
    	int getA() 
    	{
    		return this->a;
    	}
    protected:
    private:
    	int a;
    	int b;
    	int c;
    };
    
    
    class MyE
    {
    public:
    	MyE():abcd1(1,2,3),abcd2(4,5,6),m(100)//无参构造函数,外加初始化
    	{
    		cout<<"MyD()"<<endl;
    	}
    	~MyE()
    	{
    		cout<<"~MyD()"<<endl;
    	}
    	MyE(const MyE & obj):abcd1(7,8,9),abcd2(10,11,12),m(100)//赋值构造函数和初始化
    	{
    		printf("MyD(const MyD & obj)
    ");
    	}
    
    protected:
    	//private:
    public:
    	ABCD abcd1; //c++编译器不知道如何构造abc1
    	ABCD abcd2;
    	const int m;
    
    };
    
    int doThing(MyE mye1)
    {
    	printf("doThing() mye1.abc1.a:%d 
    ", mye1.abcd1.getA()); 
    	return 0;
    }
    
    int run2()
    {
    	MyE myE;
    	doThing(myE);//没成想会 调用拷贝构造函数,形参初始化完毕后才调用geta
    	return 0;
    }
    
    //
    int run3()
    {
    	printf("run3 start..
    ");
    
    	//临时对象(匿名对象)的生命周期只存在于这一句话,因为没有变量去承接它
    	ABCD(400, 500, 600); //临时对象(匿名对象)的生命周期只存在于这一句话,因为没有变量去承接它  
    
    	ABCD abcd = ABCD(100, 200, 300);//这句不理解,不用调用构造函数
    	//若直接调用构造函数呢?
    	//想调用构造函数对abc对象进行再复制,可以吗?
    	//在构造函数里面调用另外一个构造函数,会有什么结果?
    
    	printf("run3 end
    ");
    	return 0;
    }
    
    int main()
    {
    	//run2();
    	run3();
    	system("pause");
    	return 0;
    }
    

      

     匿名对象引用的时候必须用const 不然报错

  • 相关阅读:
    无向连通图求割边+缩点+LCA
    poj 1417(并查集+简单dp)
    java系统时间的调用和格式转换
    Delphi程序的主题(Theme)设置
    分块读取Blob字段数据(Oracle)
    Delphi xe5 编译报environment.proj错误的解决
    DataSnap服务器从xe2升级到xe5报错的处理
    分块读取Blob字段数据(MSSQL)
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6573097.html
Copyright © 2011-2022 走看看