1. 如果某个virtual函数只是想由某个派生类间接地使用,那么可以让它是private。
2. 举例:
1 class Buffer 2 { 3 public: 4 void put(); 5 protected: 6 private: 7 virtual void overflow(); 8 }; 9 10 void Buffer::put() 11 { 12 // ... 13 overflow(); 14 } 15 16 void Buffer::overflow() 17 { 18 // ... 19 } 20 21 class Critular_Buffer : public Buffer 22 { 23 public: 24 protected: 25 private: 26 virtual void overflow(); 27 }; 28 29 void Critular_Buffer::overflow() 30 { 31 // ... 32 } 33 34 int main() 35 { 36 // ... 37 Critular_Buffer cbuf; 38 cbuf.put(); 39 40 return 0; 41 }
3. 如果派生类不需要直接调用overflow()虚函数,则派生类可以进行private、protected、public覆盖;
如果需要在类外部进行多态调用overflow()虚函数,则基类中的overflow()虚函数必须为public,而派生类中可以进行private、protected、public覆盖。
浙公网安备 33010602011771号