private virtual in c++

source from http://blog.csdn.net/steedhorse/article/details/333664

// Test.cpp
#include <iostream>
using namespace std;   

class Base {
public:
    void f() {
        g();
    }  

private:
    virtual void g() {
        cout << "Hi, MorningStar! I am g() of Base!." << endl;
    }
};  

class Derived : public Base {
private:
    virtual void g() {
        cout << "Hi, MorningStar! I am g() of Derived." << endl;
    }
};  

int main() {
    Base *pB = new Derived();
    pB->f();
    delete pB;
    return 0;
}

  

时间: 2024-11-29 00:25:05

private virtual in c++的相关文章

private virtual函数

派生类可以继承基类中的private virtual函数 <Effective c++>上说:"derived class可重新定义继承而来的private virtual函数".这个规则可以用到NVI手法中."令客户通过public non-virtual成员函数间接调用private virtual函数,称为non-virtualinterface(NVI)手法.它是所谓Template Method设计模式的一个独特表现形式.我把这个non-virtual函

Java/C++之 public、protected、private ; virtual &amp; abstract

一.绪 Java/C++都是面向对象的第三代计算机高级编程语言,其本质雷同,而语法确有差异,稍不注意容易引起混淆.本文总结了一些这两门语言的差异之处,仅供参考. 二.C++ 对于C++这门语言,就其类来说成员访问类型就有  public.protected.private; 而就其继承方式来说 也分为共有继承.保护继承.私有继承.此外C++中有虚函数.纯虚函数之分,还有覆盖.隐藏之别.相对比较复杂. 就其多态性而言:当基类指针指向派生类时,此时基类指针只能访问基类中已有的成员,而不能访问派生类中

private + virtual in Java/C++

在Java中,private方法是隐式final的,就是说即使在子类中定义一个一模一样的方法,编译器认为这是两个没有联系的方法.private方法不参与运行时多态,这点和 final方法.static方法是一样的,而且,对显式final方法试图进行重写是会出错的,而对隐式final(private,static)方法可以在子类中定义一模一样的方法,只是不会 参与运行时多态.也就是说,Java中除了声明为final.static.private的方法,其他都是默认的虚方法. 而在C++中却是完全不

c++中的private/protect/public &amp; virtual

private: 私有控制符.这类成员只能被本类中的成员函数和类的友元函数访问. protected: 受保护控制符.这类成员可以被本类中的成员函数和类的友元函数访问,也可以被派生类的成员函数和类的友元函数访问. public: 共有控制符.这类成员可以被本类中的成员函数和类的友元函数访问,也可以被类作用域内的其他函数引用. virtual: C++通过虚函数实现多态."无论发送消息的对象属于什么类,它们均发送具有同一形式的消息,对消息的处理方式可能随接手消息的对象而变"的处理方式被称

《Effective C++》:条款35:考虑virtual函数以外的其他选择

条款35:考虑virtual函数以外的其他选择 条款35考虑virtual函数以外的其他选择 藉由Non-virtual Interface手法实现Template Method模式 藉由Function Pointers实现Strategy模式 藉由tr1function完成Strategy模式 古典的Strategy模式 摘要 virtual函数在派生中经常用到,在遇到一些问题时用virtual函数没问题,但是有时候我们应该思考一下是否有替代方案,以此来拓宽我们的视野. 假如现在正在写一个游

Effective C++:条款35:考虑virtual函数以外的其他选择

游戏中的人物伤害值计算问题. (一)方法(1):一般来讲可以使用虚函数的方法: class GameCharacter { public: virtual int healthValue() const; //返回人物的体力值,派生类可以做出修改 ... }; 这确实是一个显而易见的设计选择.但因为这样的设计过于显而易见,可能不会对其它可选方法给予足够的关注.我们来考虑一些处理这个问题的其它方法. (二)方法(2):使用NVI方法,在基类中使用一个公有的普通函数调用私有的虚函数. class G

(继承)virtual与访问控制

之前只注意过访问控制与继承的关系,这边不多说,今天看到代码看到virtual放在private里,并且还有派生类没有override public里的virtual,此时调用时啥情况了,这边有点晕,看下面代码 首先最基本的多态代码 #include <iostream> #include <string> using namespace std; class animal { public: //animal(); //~animal(); virtual void speakou

Effective C++ Item 35 考虑 virtual 函数以外的实现

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.virtual 函数版本 class GameCharacter{ public: virtual int healthValue() const; //返回人物的健康指数, derived classes 可重新定义它 }; 2.使用 non-virtual interface 手法,那是 Template Method 设计模式的一种特殊形式. 让客户通过 public non-v

private 继承 真的没用吗??

private继承,在看到effective C++之前,我发现在我之前的代码里面,没有用到这个机制,但是认真回想起还是有一些影子. 大多数人认为private继承是没有用的,其实不然,在某些情况下,它也会带给你一些惊喜. 好,言归正传,之前已经数次提到过 public继承表示的是  "is   a "的关系,也就是说每一个derived对象D同时也是base对象,任何在base对象上的操作可以实施到derived对象身上. 例如: class Person{....}; class