我有一个关于继承的基本问题,我似乎可以弄清楚,我已经进行了搜索,但没有找到我正在寻找的东西,所以我想我会在这里问(不确定我正在寻找的标题是否是正确的)。
为了简单起见,我制作了一些示例代码来说明我没有得到什么。
基本上,如果我有一个父class A
类和两个子类B
& C
,其中A
包含常见的东西(比如id
带有 get/set ),而B
&C
具有特定于类的功能。如果你声明一个类B
:A *bObject = new B();
how do you then access the class specific function
bObj->specific()`?
我已经尝试过virtual
,但这需要B
&C
声明相同的函数名/原型。我也尝试过在 中声明抽象A
,但这要求它必须是原型才能在A
.
我在哪里错了?对此的任何帮助,可能是基本问题都会有所帮助。
#include <iostream>
using namespace std;
// A class dec
class A
{
public:
A(void);
~A(void);
char id;
void setId(char id);
char getId();
};
// B class dec - child of A
class B :
public A
{
public:
B(void);
~B(void);
void sayHello();
};
//C class dec - child of A
class C :
public A
{
public:
C(void);
~C(void);
void sayGoodby();
};
//a stuff
A::A(void)
{
}
A::~A(void)
{
}
void A::setId(char id)
{
this->id = id;
}
char A::getId()
{
return this->id;
}
//b stuff
B::B(void)
{
this->setId('b');
}
B::~B(void)
{
}
// c stuff
C::C(void)
{
this->setId('c');
}
C::~C(void)
{
}
void C::sayGoodby()
{
std::cout << "Im Only In C" << std::endl;
}
// main
void main ()
{
A *bobj = new B();
A* cobj = new C();
std::cout << "im class: " << bobj->getId() << endl;
bobj->sayHello(); // A has no member sayHello
std::cout << "im class: " << cobj->getId() << endl;
cobj->sayGoodby(); // A has no member sayGoodby
system("PAUSE");
}
感谢您的时间!