实现一个无法被继承的C++类(转)
来源:互联网 发布:海岛奇兵攻略软件 编辑:程序博客网 时间:2024/06/07 09:11
class
{
void
};
CParent
CParent
{
}
CParent
换个思路考虑一下,友元不也是不能被继承的么?我们可以把类的构造函数定义为private的同时,定义友元函数来帮助构造类的实例。
{
};
CParent
{
}
这个类也是不能被继承的,但是出现的问题和前面一样:我们还是不能像对普通类那样对待这个类。
现在设想一下,有一个CParent类,我们不希望他能够被继承。在友元不能被继承的思路指引下,我们要考虑让CParent的友元属性不能被继承。假设有一个辅助类CNoHeritance,CParent是CNoHeritance类的友元。还要假设一个CChild类,它试图去继承CParent类(如果它有这个能耐的话)。
先把CNoHeritance类的构造函数定义成private,然后将CParent声明为CNoHeritance的友元类。同时CParent继承了CNoHeritance类。到目前为止,CNoHeritance除了CParent类以外,谁也无法对它进行访问和实例化。CChild因为无法继承CParent的友元特性,所以CChild无法对CNoHeritance直接进行实例化(但是可以通过CParent)。
如果我们让CParent类虚继承CNoHeritance类,根据虚继承的特性,虚基类的构造函数由最终的子类负责构造。因此CChild如果要想继承CParent,它必须能够构造CNoHeritance,这是不可能的!因此,我们的CParent也就终于成为了一个无法继承的类。
class
{
};
{
private:
};
{
};
- 实现一个无法被继承的类
- 实现一个无法被继承的C++类(转)
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 实现一个无法被继承的C++类
- 【c++】实现一个不能被继承的类
- 如何写一个无法被继承的类
- c++设计一个无法被继承的类
- 试题:实现一个不能被继承的类(上)
- 试题:实现一个不能被继承的类(下)
- 试题:实现一个不能被继承的类(续之下)
- 试题:实现一个不能被继承的类(续之上)
- 用C++实现一个不能被继承的类
- 用C++实现一个不能被继承的类
- C++实习生笔试及HR面试总结
- C++二面(转)
- 恺英HR面试
- 如何评估嵌入式软件测试工具?
- 看源码学C++运算符重载(转)
- 实现一个无法被继承的C++类(转)
- 子类能不能继承父类的私有成员
- C++头文件编译问题
- volatile的作用
- 二叉排序树的创建与遍历
- 二叉排序树的详细实现(转)
- itoa()和atoi()/atol()的源码(转…
- 构造函数与析构函数能不能继承?
- C语言中的typeof关键字