私は少しポリモーフィズムを知っていますが、ここでは少し迷っています.fromメソッドへの暗黙的な変換がB
呼び出されますが、メソッドfromが明示的に呼び出されます。これは理にかなっていますが、メソッドは仮想であり、それ以外の場合はどちらも入力です (クラスのメソッドが呼び出されます)。A
B
A
ShowA
A
class A
{
public:
A(){};
~A(){}
public:
int n;
virtual void Show(){ cout << "ShowA" << endl; };
};
class B : public A
{
public:
B(){};
~B(){}
virtual void Show() { cout << "ShowB" << endl; }
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
A& a = b; //ShowB
A& a = (A)b; //ShowA
a.Show();
//Extra:
A& extra = extra;
return 0;
}
また、禁止されていないのには何か理由があるのA& extra = extra
でしょうか、それとも単純に禁止されている意味のないことの重要性がほとんどないからですか?