知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(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);
}
(完)