慎用 const 引用参数类型

前两天写代码时同事碰到一个c++编译错误,代号为c2664,内容为 不能将const object * __w64 to object*, 但明明取的就是一般的object*,怎么会说我们给的参数类型是const object* __w64,很奇怪。

经过细心检查,原来是函数参数的问题,用的const object& 类型,虽然大家一般都用const 加 &来创建参数,这样效率会高,也可防止修改对象。但在实际的应用中,这样使用也会有一些问题。

class object{

public:

        void  f() const {     };

        char * getMember{ return p };

private:

//member viarible; 

char * p;

};

void test(const object & parm)

{

}

在test函数中有个const & 参数,是一个常对象,而常对象只能只能访问它自己的const 成员函数,所以这对我们使用object的成员函数造成一些限制。如果不慎使用了非const成员函数,会造成编译错误。

void test(const object & parm)

{

char* temp = parm.getMember();

// 编译错误,error C2662: 'object::getMember' : cannot convert 'this' pointer from 'const object' to 'object &'

}

后续:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值