#include <iostream>
using namespace std;
struct Keyboard
{
string m_strModel;
};
class Computer
{
private:
Keyboard *m_pKeyboard;
string m_strModel;
public:
Computer() : m_pKeyboard(NULL){}
Computer(const Computer& com) : m_strModel(com.m_strModel)
{
Keyboard *pOldKeyboard = com.GetKeyboard();
if(pOldKeyboard != NULL)
m_pKeyboard = new Keyboard(*(pOldKeyboard));
else
m_pKeyboard = NULL;
}
void SetKeyboard(Keyboard *pKeyboard)
{
m_pKeyboard = pKeyboard;
}
Keyboard *GetKeyboard() const
{
return m_pKeyboard;
}
};
int main()
{
Computer oldcom;
Keyboard keyboard;
keyboard.m_strModel = "channel-310";
oldcom.SetKeyboard(&keyboard);
Computer newcom(oldcom);
//Computer newcom; //new_object(old_object) isn't the same as "new_object=old_object"
//newcom = oldcom;
//newcom(oldcom);
Keyboard *p1 = oldcom.GetKeyboard();
Keyboard *p2 = newcom.GetKeyboard();
if(p1 == p2)
cout<<"pointer is equal!!!"<<endl;
if(p1->m_strModel == p2->m_strModel)
cout<<"value is equal!!!\t"<<p1->m_strModel<<endl;
return 0;
}
关于拷贝函数
最新推荐文章于 2022-09-14 09:15:54 发布