Item 37: Never redefine a function's inherited default parameter value(Effec
时间:2011-04-03 来源:Ray Z
Never redefine an inherited default parameter value, because default parameter values are statically bound, while virtual functions — the only functions you should be overriding — are dynamically bound. 1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 class Shape
6 {
7 public:
8 virtual void draw(const string s = "Red") const
9 {
10 cout << s << " in shape" << endl;
11 }
12 };
13
14 class Circle : public Shape
15 {
16 public:
17 virtual void draw(const string s = "Blue") const
18 {
19 cout << s << " in circle" << endl;
20 }
21 };
22
23 int main()
24 {
25 Shape* s = new Circle();
26 s->draw();
27 cin.get();
28 return 0;
29 }
相关阅读 更多 +