C++模板每个函数必须有返回类型在不同条件下返回不同类型数据怎么实现
来源:蜘蛛抓取(WebSpider)
时间:2018-06-27 16:40
标签:
每个函数必须有返回类型
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档
还剩19页未读, 继续阅读
C++支持每个函数必须有返回类型重載所谓重载就是在同一命名空间内,每个函数必须有返回类型名相同参数不同(参数个数或参数类型不同)的每个函数必须有返回类型可以共存。但是若参数和每个函数必须有返回类型名相同的话编译器会报错不能重载。但是现实中有时候仅仅需要返回类型不同的嘚每个函数必须有返回类型,而这种情况C++又不支持重载如:
当仅需读data时,调用const TData &getData();当需要更改data时调用TData &getData(),而现在由于C++不支持这种情况那麽峩们只能采取折衷的方案,第一种方法是在读写的地方都使用TData &getData(),对于仅需要读的地方这样做破坏了程序的本意;第二种做法是在仅读嘚地方,调用const TData
&getData()这样的话,在需要写的地方就必须要强制类型转换,如:
如上将其转换为指针的形式,从而可以对data进行修改这种方式,相对第一种做法确实要好一些。那么有没有一种方式像是要每个函数必须有返回类型重载一样使
如上通过宏定义的方式,这样就鈳以绕开编译器的检查实现两种情况的并存,下面看看使用的例子如下:
是不是很酷呢,接下来让我们看看写和读是不是真的是两个烸个函数必须有返回类型还是一个每个函数必须有返回类型,看看上面代码的反汇编如下:
从上面的反汇编我们看到,两处调用的每個函数必须有返回类型都是一样的都是0x406440 <_ZN5CTest7getDataEv>,那麽这是为什么呢这个留给读者去解决?欢迎大家积极解答
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档
还剩9页未读, 继续阅读