欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

設計模式----原形模式 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

設計模式----原形模式

發(fā)表時間:2020-10-18

發(fā)布人:葵宇科技

瀏覽次數:45

原形模式類似于拷貝構造函數,提供一種可以直接拷貝原對象的方法,這種方法比較簡單,就不畫類圖了,直接看一下對應代碼:

#include <iostream>
#include <string>
using namespace std;

class Person {
public:
	virtual Person *Clone() = 0;
	virtual void Print() = 0;
};

class CppProgramer : public Person {
public:
	CppProgramer() : m_Name(""), m_Age(0), m_pAddress(NULL) {}
	CppProgramer(string name, int age, const char *pszAddr) : m_Name(name), m_Age(age), m_pAddress(new char[strlen(pszAddr)]) {

	}
	void Print() {
		cout << "C++程序員的姓名: " << m_Name << "年齡: " << m_Age << endl;
	}
	Person *Clone() {
		CppProgramer* tmp = new CppProgramer;
		tmp->m_Name = this->m_Name;
		tmp->m_Age = this->m_Age;
		int iLen = strlen(m_pAddress) + 1;
		tmp->m_pAddress = new char[iLen];
		strcpy(tmp->m_pAddress, this->m_pAddress);
		
		return(tmp);
	}
	~CppProgramer() {
		if (m_pAddress) {
			delete[] m_pAddress;
			m_pAddress = NULL;
		}

	}
private:
	string m_Name;
	char* m_pAddress;
	int m_Age;
};

int main() {
	const char* pszAddr = "中山路";
	CppProgramer cpp("YangMing", 15, pszAddr);
	Person* p = cpp.Clone();
	p->Print();

	system("pause");

	return(0);
}

(完)

相關案例查看更多