当它在指针c ++中时如何使用继承类的真实功能
Posted
技术标签:
【中文标题】当它在指针c ++中时如何使用继承类的真实功能【英文标题】:how to use real function of inheritance class when it's in pointer c++ 【发布时间】:2017-06-03 18:39:11 【问题描述】:class A
public:
int aaa;
A()aaa=0;
void print() const;
;
class B : public A
public:
int bbb;
B()aaa=0,bbb=12;
void print() const;
;
void A::print() const
cout << aaa << endl;
void B::print() const
cout << bbb << endl;
int main()
A *ptr[2];
ptr[0]=new B();
ptr->print(); //it will show 0 from aaa but how to show 12 from bbb.
我想在 A 类中显示 12(在 B 类中:公共 A)而不是 0。 有人知道很多指针和继承和多态性,请帮助我知道如何感谢!
【问题讨论】:
您的代码无法编译。 “错误:预期';' '' 之前的两个位置。 将接受的答案的“虚拟”修饰符添加到 A::print() 后,您仍然可以使用显示的“ptr[0]->A::print()”访问 A::print A::aaa 的“0”。 【参考方案1】:使用virtual
函数。换句话说:
class A
public:
int aaa;
A()aaa=0;;
virtual void print() const;
;
【讨论】:
【参考方案2】:您必须将函数设为虚拟。在函数定义中使用关键字virtual
【讨论】:
另外,ptr[0]
不是 ptr
in ptr->print()
【参考方案3】:
创建函数virtual
,这将延迟函数名称与其主体的绑定。
virtual void print() const;
【讨论】:
以上是关于当它在指针c ++中时如何使用继承类的真实功能的主要内容,如果未能解决你的问题,请参考以下文章
当它被包装在提供者组件中时,如何使用 mocha + 酶 + chai 测试反应原生组件
asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator