// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
//#pragma warning(disable:4996)
using namespace std;
class test{
public:
test() {
cout << "test() is called. " << endl;
}
~test(void){
cout << "~test is called" << endl;
}
test(const test ¶){
cout << "test(const test ¶) is called. " << endl;
}
test &operator = (const test &other){
cout << "test &operator = (const test &other)" << endl;
return *this;
}
};
test fun()
{
test a;
return a;
}
int main(int argc, char *argv[])
{
test b;
b = fun();
}
执行结果:
结果分析:
test() is called.//main函数中的test b;调用一次构造函数
test() is called.//fun中的test a;调用一次构造函数
test(const test ¶) is called.//fun函数的return a;调用复制构造函数生成临时对象。如果没有指明构造函数,编译器将产生默认的构造函数
~test is called//对象a析构
test &operator = (const test &other)//fun返回给b,调用赋值构造函数
~test is called//临时的对象析构
~test is called//对象b析构
请按任意键继续. . .