Effective C++条項37解読:継承されたデフォルトパラメータ値を再定義しない(2012年某会社筆記試験問題)
簡単だが間違いやすいテーマを見てみましょう.
Effective C++は、継承されたデフォルトパラメータ値を再定義しないと言います.
はい、私はもっと多くのクラスの斧を弄しません.具体的な詳細を知っている友达が必要です.この経典の作品を参考にすることができます.
#include
using namespace std;
class A
{
public:
virtual void fun(int n = 1)
{
cout << "A--->" << n << endl;
}
};
class B : public A
{
public:
virtual void fun(int n = 2)
{
cout << "B--->" << n << endl;
}
};
int main()
{
A *p;
B b;
p = &b;
p->fun();
return 0;
}
少しC++多態を知っている人は、答えはB--->2だと思っているかもしれませんが、実は答えはB--->1です.どうしてですか.虚関数は動的にバインドされていますが、デフォルトのパラメータ値は確かに静的にバインドされています.そこで、上記のような誤った理解を避けるために、C++大牛Scott Meyersは有名なEffective C++の中で次のような言葉を言いました.Effective C++は、継承されたデフォルトパラメータ値を再定義しないと言います.
はい、私はもっと多くのクラスの斧を弄しません.具体的な詳細を知っている友达が必要です.この経典の作品を参考にすることができます.