关于c++禁止继承的有关问题
关于c++禁止继承的问题
请问我用以下方法来实现c++中类的禁止继承是否正确呢?
class A
{
friend class B;
private:
A(){}
~A(){}
};
class B:virtual class A
{
};
class C:public B
{
};
禁止C继承B
------解决方案--------------------
父类的构造函数为private时,就禁止继承了 。。。
------解决方案--------------------
class B:virtual class A
{
};
这个virtual这是什么东西 ,好像还没听所过virtual继承
你不想让C继承B 那就不继承不就行了
我不明白你禁止继承是什么意思
------解决方案--------------------
父类构造为private非常不好,那父类自己也不能实例化了。
------解决方案--------------------
你这个B虚继承也是失败的吧
------解决方案--------------------
------解决方案--------------------
c++中有一个关键字:sealed
当你如下定以一个类时:
sealed class A
{
public:
A(){}
}
类A就不允许被继承了
------解决方案--------------------
------解决方案--------------------
或者也可以这样:
class B:private virtual class A
{
};
此时,类B也不可以被继承
------解决方案--------------------
请问我用以下方法来实现c++中类的禁止继承是否正确呢?
class A
{
friend class B;
private:
A(){}
~A(){}
};
class B:virtual class A
{
};
class C:public B
{
};
禁止C继承B
------解决方案--------------------
父类的构造函数为private时,就禁止继承了 。。。
------解决方案--------------------
class B:virtual class A
{
};
这个virtual这是什么东西 ,好像还没听所过virtual继承
你不想让C继承B 那就不继承不就行了
我不明白你禁止继承是什么意思
------解决方案--------------------
父类构造为private非常不好,那父类自己也不能实例化了。
------解决方案--------------------
你这个B虚继承也是失败的吧
------解决方案--------------------
------解决方案--------------------
c++中有一个关键字:sealed
当你如下定以一个类时:
sealed class A
{
public:
A(){}
}
类A就不允许被继承了
------解决方案--------------------
------解决方案--------------------
或者也可以这样:
class B:private virtual class A
{
};
此时,类B也不可以被继承
------解决方案--------------------
- C/C++ code
#include <iostream> #include <stdlib.h> using namespace std; class Singleton { private: Singleton() // private构造函数 { cout << "Singleton::Constructor" << endl; } static Singleton* sg; // 私有静态变量,其类型为Singleton* // 形如Singleton sg;这样的声明会出编译时错误 public: static Singleton* getInstance() // public成员函数getInstance() { cout << "Singleton::getInstance" << endl; if(!sg) { sg = new Singleton(); // (1)在这个地方new了一个对象,但是在什么地方delete呢? } return sg; } }; Singleton* Singleton::sg = 0; int main(void) { Singleton *sg = Singleton::getInstance(); return 0; }
------解决方案--------------------
http://blog.csdn.net/liuxizhiyi/article/details/3201128
------解决方案--------------------
你这个就不但禁止继承 而且还禁止在栈上创建对象。
------解决方案--------------------
http://www.cppblog.com/sunus/archive/2007/08/14/17532.html
------解决方案--------------------
sealed是.net里面的吧??是不是需要托管才能用??