类构造函数和析构函数

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。

最后,程序结束,调用相应的析构函数,因此能看到这些信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值