假设我有这个:
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:对不起我的英语
假设我有一个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 []?