我有一个关于C 中多态性的问题:
标题文件
class Base {
public:
type1 data;
};
class Derived1 : public Base {
public:
type2 data;
};
class Derived2 : public Base {
public:
type3 data;
};
代码:
Base * obj;
if (...)
obj = new Derived1();
else
obj = new Dervied2();
// Do something on declared object
DoSomething( obj->data );
如果类型取决于定义的派生类,我应该在基类中将type1放置什么?功能dosomething((将被超载以接收type2或type3。
这是唯一的(*(正确的咒语。
class Base {
public:
virtual void DoSomething() = 0;
// no data
};
class Derived1 : public Base {
public:
void DoSomething() override;
private:
type2 data;
};
class Derived2 : public Base {
public:
void DoSomething() override;
private:
type3 data;
};
Base * obj;
if (...)
obj = new Derived1();
else
obj = new Derived2();
obj->DoSomething();
(*(还有其他有效(如"它在运行时编译"(的方式,但它们不是 right 。