使用CString常量时出现的问题

<script src="win.js" type="text/javascript"></script>

问题: error C2663: 'ATL::CSimpleStringT<BaseType,t_bMFCDLL>::GetBuffer' : 2 オーバーロードに 'this' ポインタのための必要な定義がされていません。
        with
        [
            BaseType=wchar_t,
            t_bMFCDLL=true
        ]

此问题出现情况:

定义常量CString, str;然后调用str.GetBuffer( str.GetLength );

 

解答:

 

stats属于函数体内的局部变量,分配在栈上,生命周期为所属的{}内,通常就是函数体内。
你可以这样理解const变量:在该变量生命期内,不允许二次赋值。
但是一旦函数调用完毕,所有局部变量也全部被销毁,所以是正常的。

另外,const除了起到优化的作用外(例如const字符串会被compiler放到一个const string pool中),通常也可以视作一种良好的编码规范。毕竟说穿了它只是一块内存而已,你非要逆天而行使用const_cast,compiler自然也由得你去,关键在于,你要清楚你在做什么以及对你的行为负责

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值