#include <iostream>
#include <string>
#include <fstream>
#include <assert.h>
using namespace std;
struct Keyboard{
string m_strModel;
};
class Computer{
private:
Keyboard *m_pKeyboard;
string m_strModel;
public:
Computer():m_pKeyboard(nullptr){}
Computer(const Computer &com):m_strModel(com.m_strModel){
Keyboard* pOldKeyboard = com.getKeyboard();
if(nullptr != pOldKeyboard){
m_pKeyboard = new Keyboard(*(pOldKeyboard));
}else{
m_pKeyboard = nullptr;
}
}
void setKeyboard(Keyboard* pKeyboard){
m_pKeyboard = pKeyboard;
}
Keyboard* getKeyboard() const{
return m_pKeyboard;
}
};
int main()
{
Computer oldcom;
Keyboard keyboard;
keyboard.m_strModel = "Microsoft-101";
oldcom.setKeyboard(&keyboard);
Computer newcom(oldcom);
assert(newcom.getKeyboard() != oldcom.getKeyboard());
cout << newcom.getKeyboard()->m_strModel << endl;
cout << oldcom.getKeyboard()->m_strModel << endl;
assert(newcom.getKeyboard()->m_strModel == oldcom.getKeyboard()->m_strModel);
return 0;
}
C++拷贝构造函数应用示例
最新推荐文章于 2024-08-14 17:18:35 发布