实现一个不能被继承的类
程序员文章站
2022-07-15 20:34:16
...
一.将基类的默认构造函数定义为私有的
class AA
{
private:
AA()
{}
protected:
int _a;
};
class BB : public AA
{
};
int main()
{
BB b;
return 0;
}
编译一下,编译器报错,AA类无法被BB类继承
类BB虽然可以被定义出来,但是AA类的默认构造函数对BB类是不可见的,BB类也就无法合成默认构造函数.
二.利用静态成员函数调用默认构造函数
可是我们把AA类的默认构造函数定义为私有的,在类外面也就使用不了了,如何解决这个问题?
虽然类外面不可以调用,但是类内可以调用自己的私有成员,基于这个理论,我们可以增加一个专门用来访问构造函数的函数.
注意:这里必须用static,因为静态成员函数不需要t用对象来调用.
//方法一
public:
static AA* GetAA()
{
return new AA;
}
//调用方法
AA* p1 = AA::GetAA();
//方法二
public:
static AA GetAA()
{
return AA();
}
//调用方法
AA aa = AA::GetAA();
上一篇: 实现一个不能被继承的类
下一篇: python 小白案例演练
推荐阅读
-
Javascript中类式继承和原型式继承的实现方法和区别之处
-
一个用php实现的获取URL信息的类
-
.net工具类 分享一个简单的随机分红包的实现方式
-
PHP取得一个类的属性和方法的实现代码
-
实现了一个PHP5的getter/setter基类的代码
-
java继承:定义交通工具类Vehicle,一个小车类Car,一个公共汽车Bus类,实现Car、Bus对Vehicle的继承
-
@Autowired 和 @Resource注解, 一个接口有多个实现类的时候Spring注入遇到的问题
-
一个接口多个实现类,如何调用哪个实现类的方法
-
php实现的一个很好用HTML解析器类可用于采集数据
-
JavaScript原型的工作原理(以及如何利用它来实现类的继承)