只创建在堆上生成的变量详解

本文详细探讨了如何在C++中确保变量只在堆上创建,而不是在栈上。通过分析两种方法,包括将构造函数设为私有以及利用抽象类,解释了如何限制直接在栈上定义变量。对于不能设置构造函数为私有的情况,提出了使用抽象类作为解决方案,强调了抽象类在非继承场景中的应用价值。
摘要由CSDN通过智能技术生成

解析:今天在看Effective C++时,看到了抽象函数详解那块,于是很自然的就想到了以前看过的一道题:创建只在堆上生成的变量。这题换句话说:只能用指针创建变量,即Type *value=get_point();类似于这样的问题,

有两种方法可以完成这个问题:

1、第一种,也是最能先想到的一种,将构造函数放在private(私有)里,这样就无法在栈上定义变量了,这种很简单,基本学过class的程序员都能想到,现在要不构造函数不能设置成私有的,该怎么解决,那么你接下来看我第二种实现就很有意义了

2、用抽象类实现,一般的书上都是这样写的,抽象类如果不用在继承里的话就没多大意义,而我现在就要推翻这个说法,准确的来说的抽象类一般都用在继承中才能体现它的价值,将方法重新实现,即只为子类提供一个接口而不提供实现方法,这就是抽象类存在的价值,

ps 注意:两个得到对象地址都需要使用static修饰



#include <iostream>
#include <stri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值