通过下面的例子我们可以了解到临时对象,在程序中创建和销毁的过程。
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;
}
/*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;
}