C++中不能被继承的类的实现

来源:互联网 发布:linux中sort命令 编辑:程序博客网 时间:2024/05/16 11:44

首先,了解下什么是虚继承-- 为了解决菱形继承的多义性

 

#include <iostream>using namespace std;class Animal{public:    void foo()    {        cout << "Animal foo"<<endl;    }};class Mammal : public virtual Animal{};class WingedAnimal  : public virtual Animal{};class Bat: public Mammal,public WingedAnimal{};int main(int argc, char* argv[]){    Bat b;    b.foo();    return 0;}

 

则基于C++的一个不能被继承的类写法如下:

#include <iostream>using namespace std;class Parent{ friend class FinalClass;private: Parent() { cout << "Parent ctor"<<endl; }};

//虚继承

class FinalClass : public virtual Parent{};class SubChild: public FinalClass{};int main(){ FinalClass finalClass;

//SubChild不能再实例化了,编译错误

//SubChild test; return 0;}

 

原创粉丝点击