当前位置:  开发笔记 > 编程语言 > 正文

调用基类函数

如何解决《调用基类函数》经验,为你挑选了1个好方法。

我有以下课程.

class A
{

public:

void fun();

}

class B: public A
{

}

class C: public A
{

}

A * ptr = new C;

可以做下面这样的事情吗?如果在基类中引入一些虚函数,我会遇到一些问题吗?

((B *)ptr)->fun();

这可能看起来很愚蠢,但我有一个通过B调用A函数的函数,我不想改变它.



1> Steve Rowe..:

您不能将A*指向C类作为B*,因为C类与B类没有任何关系.您将获得未定义的行为,这可能是调用的错误函数和堆栈损坏.

如果你打算从C级派生出来,那么你可以.但是,你不需要.如果C类没有定义fun(),它将继承A的.你没有声明fun()虚拟,所以如果你甚至实现C :: fun()或B :: fun(),你会得到奇怪的行为.你几乎肯定希望fun()被声明为虚拟.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有