#include<iostream>
#include<map>
using namespace std;
class A{
public:
long a;
};
class B : public A {
public:
long b;
};
void seta(A* data, int idx) {
data[idx].a = 2;
}
int main(int argc, char* argv[]){
B data[4];
for (int i = 0; i<4; ++i){
data[i].a = 1;
data[i].b = 1;
seta(data, i);
}
for (int i = 0; i<4; ++i){
std::cout << data[i].a << data[i].b;
}
return 0;
}
結果打印爲22221111
。C++關於類繼承的隱式轉換
當我將A::a
類型更改爲雙倍時,結果打印爲20201111
。
當我將A::a
類型更改爲float時,結果打印爲2107374182421073741821111
。
它如何融合?
在這方面,數組不是多態。你只是有一堆未定義的行爲正在進行。 – StoryTeller