3

データ メンバーを再定義すると、クラスの実装はどうなりますか? たとえば、次があるとします。

class foo {
public:
    int a;
    char *b;
};
...
class bar : public foo {
public:
    float c;
    int b;
};

バー オブジェクトの表現には、b フィールドが 1 つ含まれていますか、それとも 2 つ含まれていますか? 2 つある場合、両方にアクセスできますか、それとも 1 つだけですか? どのような状況で?

4

1 に答える 1

5

2 つ含まれていますが、そのうちの 1 つは foo::b と呼ばれます。

int main() {
    bar x;
    x.b = 0;    // access bar::b
    x.foo::b = 0;   // access foo::b
}
于 2011-04-18T06:23:45.793 に答える