1

なぜ「ダブ」を印刷しないのですか?詳細な説明を探しています。御時間ありがとうございます!

#include<iostream.h>
using namespace std;

class B{
 public:
 virtual  int ft(int i) { cout <<"int"; return 0;}
};
class D: public B {
 public:
  double ft(double i){cout << "doub"; return 0.0;}
  int ft(int i) { cout <<"intdoub"; return 0;}
};

int main(){
 B *pB = new D;
 pB->ft(2.3);
}

o/pは「intdoub」です

4

1 に答える 1

6

変数pBは型B*であり、関数については認識せずdouble D::ft(double)、のみを認識しvirtual int B::ft(int)ます。double値の変換は自動的に行わ2.3intますが、コンパイラの警告が表示されるはずです。

試す:

dynamic_cast<D*>(pB)->ft(2.3);
dynamic_cast<D*>(pB)->B::ft(2.3);
于 2012-12-11T16:16:58.113 に答える