<< 前 ホーム 次 >>

bakaid: 20061210

うわ、これでコンパイル・エラーになるのか。かんべんしてほしい。

#include <iostream>
#include <sstream>

using namespace std;

class Base {
protected:
    int value;

public:
    Base(int value) : value(value) {}
    virtual ~Base() {}
    virtual int getValue() { return value; }
    virtual void getValue(int* out) { *out = value; }
};

class Derived : public Base {
public:
    Derived(int value) : Base(value) {}
    virtual ~Derived() {}
    virtual void getValue(int* out) { *out = value; }
};

int
main()
{
    Derived* d = new Derived(10);
    cout << d->getValue() << endl;
    return 0;
}

多重定義されているメンバ関数をオーバーライドするときは、多重定義されて
いるすべてのメンバ関数をオーバーライドしなければならない。

ってこと? ちょっとにわかには信じられない。これが事実だとしたら、メン
バ関数の多重定義はやるなっていってるのとおんなじじゃん。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails