Base.h
#pragma once
class Base { public: Base(void); ~Base(void); bool CreatClone(Base* item); char* m_baseprop1; }; |
Base.cpp
#include "StdAfx.h" #include "Base.h"
Base::Base(void) : m_baseprop1(NULL) { }
Base::~Base(void) { }
bool Base::CreatClone(Base* item) { m_baseprop1 = item->m_baseprop1; return false; } |
Derived.h
#pragma once #include "base.h"
class Derived : public Base { public: Derived(void); ~Derived(void); char* m_devprop1; bool CreatClone(Derived* item); }; |
Derived.cpp
#include "StdAfx.h" #include "Derived.h"
Derived::Derived(void) : m_devprop1(NULL) { }
Derived::~Derived(void) { }
bool Derived::CreatClone(Derived* item) { m_devprop1 = item->m_devprop1; //基类方法的调用通常放在方法的最后。 Base::CreatClone(item);
return false; } |
Main.cpp
#include "stdafx.h" #include <string> #include <windows.h> #include "Derived.h"
int _tmain(int argc, _TCHAR* argv[]) {
Derived* d = new Derived(); d->m_baseprop1 = "aa"; d->m_devprop1 = "bb";
Derived* d2 = new Derived(); d2->CreatClone(d);
system("pause"); //这里打断点跟踪,发现d的m_baseprop1和m_devprop1都克隆给了d2 return 0; } |