走進C++世界------臨時物件使用

輕飄風揚發表於2014-04-26

通過下面的例子我們可以瞭解到臨時物件,在程式中建立和銷燬的過程。

1、 使用一個臨時物件來初始化一個新物件時,編輯器一般會優化為直接使用臨時物件的引數來建立新物件。

       臨時物件不會直接被銷燬掉。

2 、 使用一個臨時物件來賦值一個物件時,臨時物件建立完會直接被銷燬掉。

 

/*File: temp.cpp
 *Author: sin
 *Date: 2014-4-26
 *Mail: 413977143@qq.com
 */

#include <iostream>
#include <string>
using namespace std;

class Teacher{
	string name;
	string course;
public:
	Teacher(const char *name1 ,const char *course1):name(name1),course(course1){
		cout << "建立" << course1 << "老師:" << name1 << endl;
	}
	Teacher(const Teacher& t):name(t.name),course(t.course){
		cout << "複製"  << course << "老師:" << name << endl;
	}
	~Teacher(){
		cout << "辭退"  << course << "老師:" << name << endl;
	}
};

int main()
{
	Teacher t1("阿輝","C++");
	Teacher t2 = t1;

	//使用臨時物件來初始化一個新物件,編譯器一般會優化
	//成直接用建立臨時物件的引數來建立新物件。臨時物件不會被直接釋放掉
	Teacher t3 = Teacher("bb","UC");

	t2 = t3;
	cout << "***************************************"<<endl;
	//用臨時物件來賦值一個物件,臨時物件會被直接釋放掉
	t2 = Teacher("aaa","諮詢");
	cout << "***************************************"<<endl;

	Teacher t4("cc","C++");

	return 0;
}



相關文章