<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自然也由得你去,关键在于,你要清楚你在做什么以及对你的行为负责