【zz】C++中虚関数はインライン関数とすることができますか?
4754 ワード
C++中虚関数はインライン関数でいいですか?転載CurryCoder 1.注意すべき点:
虚関数はインライン関数であってもよく、インラインは虚関数を修飾することができるが、虚関数が多態性を示す場合はインラインできない.
インラインはコンパイル中にコンパイラインラインを推奨しますが、ダミー関数の**マルチステートは実行中であり、**コンパイラは実行中にどのコードが呼び出されるか分からないため、ダミー関数がマルチステートとして表現されている場合(実行期間)インラインできません.
2.コードの例は次のとおりです.
虚関数はインライン関数であってもよく、インラインは虚関数を修飾することができるが、虚関数が多態性を示す場合はインラインできない.
インラインはコンパイル中にコンパイラインラインを推奨しますが、ダミー関数の**マルチステートは実行中であり、**コンパイラは実行中にどのコードが呼び出されるか分からないため、ダミー関数がマルチステートとして表現されている場合(実行期間)インラインできません.
inline virtual : ( Base::who()), 。
2.コードの例は次のとおりです.
#include
using namespace std;
//
class Base{
public:
inline virtual void who(){
cout << "I am Base
";
}
virtual ~Base(){}
};
//
class Derived:public Base{
public:
inline void who(){ // inline
cout << "I am Derived
";
}
};
int main(){
// who(), (Base) (b) , , , 。
Base b;
b.who();
// , , , 。
Base *bptr = new Derived();
bptr->who();
// Base (virtual ~Base() {}), delete , (Derived) , (Base) , 。
delete bptr;
bptr = nullptr;
return 0;
}