摘要:使用友元、私有构造函数、虚继承等方式可以使一个类不能被继承,可是为什么必须是虚继承?背后的原理又是什么?用C++实现一个不能被继承的类(例1) 1 #include 2 using namespace std; 3 4 template 5 class Base{ 6 frie...
分类:
编程语言 时间:
2014-10-05 11:47:28
阅读次数:
252
用C++实现一个不能被继承的类(例1) #include?<iostream>
using?namespace?std;
template?<typename?T>
class?Base{
????friend?T;
private:
????Base(){
????????cout?<<?"base"?<...
分类:
编程语言 时间:
2014-10-01 01:39:00
阅读次数:
350
C++中如何实现一个不能被继承的类?
在C#中可以使用sealed,Java中可以使用final来表示一个类不能被继承,而在c++中并没有这个,那我们怎么在c++中实现一个不能被继承的类呢?
1、把构造函数设为私有
这是最简单的一种办法了,那就是把构造函数设为私有,因为我们都知道当一个类试图从它那里继承的时候,必定会因为调用基类的构造函数,而基类的构造函数是私...
分类:
编程语言 时间:
2014-09-25 00:12:37
阅读次数:
248
方法一:#include using namespace std;class A{public: static A* getInstance(); static void deleteInstance(A* pA);private: A() { cout using namespa...
分类:
编程语言 时间:
2014-08-19 12:17:24
阅读次数:
203
在 C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。
template
class A
{
friend T;
private:
A(...
分类:
编程语言 时间:
2014-08-08 02:01:45
阅读次数:
276
方法一:通过私有化构造函数
代码:
#include
using namespace std;
//只能在堆上进行创建
class sealedClass{
private :
sealedClass(){}
~sealedClass(){}
public:
static sealedClass * getInstance(){
return new sealedClass(...
分类:
其他好文 时间:
2014-08-07 18:57:20
阅读次数:
184
不能被继承的类(私有构造函数) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 用C++设计一个不能被继承的类.可以使用私有构造函数, 并提供静态成员函数, 返回和删除类的实例.则只能在堆上创建实例, 不能在栈上创建.代码:/*
* main.cpp
*
* Created on: 2014.7.13
* Author:...
分类:
编程语言 时间:
2014-07-16 13:27:21
阅读次数:
252
不能被继承的类(模板参数友元) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 用C++设计一个不能被继承的类.可以使用模板类模板参数友元, 模板类私有构造函数, 类虚继承这个模板类, 如果类被其他类继承时, 则虚继承会直接调用模板类, 无法构造.代码:/*
* main.cpp
*
* Created on: 2014.7.13...
分类:
编程语言 时间:
2014-07-16 13:19:29
阅读次数:
273
题目:用c++实现一个不能被继承的类题解分析:常规解法:首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函...
分类:
编程语言 时间:
2014-07-10 00:20:08
阅读次数:
357
C++不同于Java,Java中被final关键字修饰的类不能被继承,C++能实现不被继承的类,但是需要自己实现。 为了使类不被继承,最好的办法是使子类不能构造父类的部分,此时子类就无法实例化整个子类。在C++中,子类的构造函数会自动调用父类的构造函数,子类的析构函数也会自动的调用父类的析构函...
分类:
编程语言 时间:
2014-07-08 23:38:23
阅读次数:
320