類的創建一般只留出使用接口,通過函數來獲取或者改變類的成員變量值,增加安全性。
1.頭文件
// 2010.05.14.Template.ZLY
#pragma once
class CMyClassImp
{
public:
CMyClassImp();
~CMyClassImp();
CString m_strName; // 姓名
int m_nAge; // 年齡
CString m_strAddress; // 家庭住址
};
class CMyClass
{
public:
CMyClass(void);
~CMyClass(void);
// 姓名
CString GetName() const;
void SetName(const CString& strName);
// 年齡
int GetAge() const;
void SetAge(const int nAge);
// 家庭住址
CString GetAddress() const;
void SetAddress(const CString strAddress);
private:
CMyClassImp* m_pImp;
};
//typedef std::shared_ptr<CMyClass> CMyClassPtr;
//CMyClassPtr pClass = std::make_shared<CMyClass>(); // 定義智能指針來使用
2.源文件
#include "StdAfx.h"
#include "MyClass.h"
CMyClassImp::CMyClassImp()
: m_nAge(0)
{
}
CMyClassImp::~CMyClassImp()
{
}
//////////////////////////////////////////
CMyClass::CMyClass(void)
{
m_pImp = new CMyClassImp;
}
CMyClass::~CMyClass(void)
{
if (m_pImp)
{
delete m_pImp;
}
}
CString CMyClass::GetName() const
{
return m_pImp->m_strName;
}
void CMyClass::SetName(const CString& strName)
{
m_pImp->m_strName = strName;
}
int CMyClass::GetAge() const
{
return m_pImp->m_nAge;
}
void CMyClass::SetAge(const int nAge)
{
m_pImp->m_nAge = nAge;
}
CString CMyClass::GetAddress() const
{
return m_pImp->m_strAddress;
}
void CMyClass::SetAddress(const CString strAddress)
{
m_pImp->m_strAddress = strAddress;
}