65,179
社区成员




#include "stdafx.h"
class BaseClass
{
public:
int getPassed() { return m_passed; }
BaseClass (int passsed):m_passed(passsed) {}
protected:
int m_passed;
};
class ChildBaseClass: public BaseClass
{
public:
ChildBaseClass():BaseClass(0) {}
void setPassed(int passed) {m_passed = passed;}
};
int main(int argc, char *argv[])
{
ChildBaseClass child;
cout << child.getPassed() << endl;
child.setPassed(1);
cout << child.getPassed() << endl;
BaseClass base(0);
cout << base.getPassed() << endl;
ChildBaseClass *pchild = (ChildBaseClass *) &base;
pchild->setPassed(1);
cout << base.getPassed() << endl;
return 0;
}
#include "stdafx.h"
class BaseClass
{
public:
int getPassed() { return m_passed; }
BaseClass (int passsed):m_passed(passsed) {}
protected:
int m_passed;
};
class WrapperBaseClass
{
public:
WrapperBaseClass(BaseClass *pBase):m_pBase(pBase) {assert(pBase);}
void setPassed(int passed)
{
BaseClass *pBase = new BaseClass(passed);
*m_pBase = *pBase;
delete pBase;
}
BaseClass& getBase(){ return *m_pBase; }
BaseClass* get(){ return m_pBase; }
private:
WrapperBaseClass(const WrapperBaseClass& other) {/* 不允许复制 */}
protected:
BaseClass *m_pBase;
};
int main(int argc, char *argv[])
{
BaseClass base(0);
cout << base.getPassed() << endl;
WrapperBaseClass wrapper(&base);
wrapper.setPassed(1);
cout << wrapper.getBase().getPassed() << endl;
cout << base.getPassed() << endl;
return 0;
}