小编rit*_*mbo的帖子

虚函数和多态

假设我有这个:

class A
{
    public:
    virtual int hello(A a);
};

class B : public A
{
   public:
   int hello(B b){ bla bla };
};
Run Code Online (Sandbox Code Playgroud)

所以,它是一个抽象类.

1)在B类中,我正在定义一个方法,它假设覆盖了A类.但它的参数略有不同.我不确定这个,这是对的吗?也许是因为多态性,这是可以的,但它相当令人困惑.2)如果我这样做:A a =新B;,然后是a.hello(lol); 如果"lol"它不是B类,那么它会给出编译错误?如果它是来自另一个C类的C类(C类:公共A),会发生什么?

我对覆盖和虚拟的东西感到困惑..我发现的所有例子都使用没有参数的方法.

任何答案,链接,或任何它的赞赏.

谢谢

pd:对不起我的英语

c++ polymorphism virtual

1
推荐指数
2
解决办法
4135
查看次数

排序对象和多态

假设我有一个A类.

而B和C是A的孩子.

A类有一个用于排序A类数组的通用算法,因此我可以将它用于B和C,而无需再为每个数组再写算法.

在算法中,有时我必须交换.问题是我只能看到对象是A类,如果我这样做:

A aux = array[i]
array[i] = array[j]
array[j] = aux
Run Code Online (Sandbox Code Playgroud)

我想我有问题.因为array [i],也许它是B类,而aux是A类,所以我觉得我失去了信息.

我相信你明白这种情况......我如何使用父方法算法对一般的对象数组进行排序?

编辑:初始数组是静态的.

编辑2:所以它不可能有:A :: sort(一个数组[]); 并做我想要的?,不能交换.

唯一的方法是有一系列的参考?A*array []?

c++ sorting polymorphism

1
推荐指数
1
解决办法
1107
查看次数

标签 统计

c++ ×2

polymorphism ×2

sorting ×1

virtual ×1