[問題] print value

作者: a33667004 (A-story)   2016-01-26 21:08:37
想請問一下
Class A {
A(){print();}
virtual print(){cout << “in A”<<endl;}
};
Class B: public A{
B(){print();}
virtual print(){cout << “in B”<<endl;}
};
void main(void)
{
B b ;
}
像這樣的問題 是會先印出B在印出A嗎
也就是 inB inA
可是不太懂原理,想請教一下~謝謝
作者: Caesar08 (Caesar)   2016-01-26 21:20:00
作者: james1022jk (雁)   2016-01-27 00:15:00
這compiler會過嗎.....
作者: ronin728 (浪人)   2016-01-27 01:18:00
題外話: 建構式要public才能用, 別再 void main了, 建構式最好 不要 呼叫virtual member。 正題: 繼承的 class 建構式會先跑他的基礎類別,inA 才 inB。
作者: LPH66 (-6.2598534e+18f)   2016-01-27 02:26:00
建構物件中不該呼叫 virtual, 不只是最好不要而已因為建構物件途中所有關於此物件的型別判定都是正建構中的物件本身, 不論正建構中的物件是在繼承關係的哪裡virtual 函式的問題只是這個判定的效應之一而已

Links booklink

Contact Us: admin [ a t ] ucptt.com