Test类描述和实现
主程序
#include "stdafx.h"
#include "ModelInfoTest.h"
#include "Test.h"
#include <iostream>
using namespace std;
extern LPTSTR ConvertCStringToStr(CString& m_str);
// CTest
CTest::CTest()
{
}
CTest::CTest( CString n )
{
name = n;
wcout << ConvertCStringToStr(name) << "Created" <<endl;
}
CTest::~CTest()
{
wcout << ConvertCStringToStr(name) << "Say Goodbye" <<endl;
}
// CTest 成员函数
CTest CTest::LocalUse(void)
{
return CTest(_T("TestInLocal"));
}
CString CTest::GetName(void)
{
return name;
}
字符串转换工具#include "stdafx.h"
#include <wtypes.h>
#include <atlstr.h>
LPTSTR ConvertCStringToStr(CString& m_str){
LPTSTR lpsz = new TCHAR[m_str.GetLength()+1];
_tcscpy(lpsz, m_str);
return lpsz;
}
主程序
……
void execute()
{
wcout.imbue(locale("chs"));
CTest t1=CTest(_T("test1"));
t1 = CTest(_T("test2"));
CTest t2 = t1.LocalUse();
}

主程序第二行,创建一个CTest对象,取名test1
第三行,系统先创建一个CTest临时对象取名为test2,并通过对象的赋值语句将所有的成员信息(这里是name)赋值给t1对象。这时候调用t1析构函数,然后,临时对象删除,调用test2析构函数。
第四行调用一个成员函数,在成员函数内创建一个CTest对象,该对象是局部变量,因此在函数调用过程中创建,在函数调用结束后删除(析构函数被调用)。但是这个函数有返回值,将局部对象通过返回拷贝到了主程序的t2对象中。因此,t2里保存的数据是testInLocal。此时,t1中保持的是test2。
最后,程序结束,调用相应的析构函数,因此能看到这些信息。