[C++基础]037_编写不可被继承的类

本文深入解析了C++中通过构造函数和析构函数实现无法被继承类的方法,详细阐述了private权限在实现此类设计中的作用,并通过代码实例展示了具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   1. 現実场景

    在很多电影电视剧里,武功最高的往往是太监,所谓“欲练此功,必先自宫”,太监的武功为什么会这么高?我想应该是闲的。如果说面向对象的世界里有父子的话,那么太监这个类应该就是无法生子的类。他们是无法被继承的,不过,他们是可以继承别人的。

   2. 技術問題

    要实现一个无法被继承的类,Java为我们提供了一个关键字final,但是C++里没有,那作为C++程序员如何写出一个无法被继承的类呢?构造函数和析构函数。

    为什么C++的构造函数和析构函数能够实现这点呢?因为C++的类继承里有一个规则,就是子类在实例化的时候,必须先调用父类的构造函数。对象销毁的时候,也必须调用父类的析构函数。所以如果我们能阻止子类调用父类的构造函数和析构函数就可以了。

    那如何让一个类的构造函数和析构函数不被子类调用呢?private权限。是的,private权限的成员和函数都只能给类自己内部用。这样的话,就可以实现我们要的无法被继承的类了。

    下面就看我们实现的代码是什么样的吧!

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Taijian{
 5 public:
 6      void publicFunc(){
 7 
 8      }
 9 
10 private:
11     Taijian(){}
12     ~Taijian(){}
13 };
14 
15 int main(){
16     return 0;
17 }

    对Taijian类,如果你试图去继承它,那是通不过编译阶段的。

   3. 补充

    关于C++的类在发生继承时,它们的构造函数和析构函数的调用次序是怎样的呢?

    构造函数:爷爷构造函数 → 父亲构造函数  → 儿子构造函数

    析构函数:儿子析构函数 → 父亲析构函数  → 爷爷析构函数

转载于:https://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/30/2747108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值