C++中的隐式转换

本文探讨了C++中类构造函数的隐式转换现象,通过示例解释了如何通过构造函数将不同类型的参数转换为类的对象。虽然这种技术在某些情况下是合法的,但可能会导致代码的不确定性,增加维护难度。建议限制此类隐式转换,以提高代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

首先我们看下一种比较常见的技术——类构造函数的隐式转换。这儿先说明下,之后的例子中,我会为了尽量突出主要内容,而忽略一些可以作为充分条件但非必要条件的东西,故设计的一些代码存在“不完善”的嫌疑。因为为了堵住所有漏洞,往往会让整个代码让人感觉其重心并非在我想介绍的技术上,而在“苦行僧”式的编程原则上。

        我们知道C++是一个类型严格的语言,比如下面一个函数

 
  1. void test_int_proxy(const int_proxy& v) {

  2. printf("%d", v.value());

  3. }

        调用者对其传参也应该是一个int_proxy的对象,但是实际情况并非如此。那该如何表述,我个人觉得应该是:编译器对其传参应该是一个int_proxy对象。这两种表述的区别就是“调用者”和“编译器”的区别。我们来看一个实际例子,我们先假定int_proxy类这么定义:

 
  1. class int_proxy {

  2. public:

  3. int_proxy(int n) : _m(n) {};

  4. public:

  5. int value() const {

  6. return _m;

  7. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值