标签:ast 方法 amp 属性 ssi 模板 str 引用 运算
它们有着相同的结构,看起来像是模板方法。这些方法就是提供给开发者用来进行指针和引用的转换的。
1、const_cast用法
const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。
变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。
用法:const_cast<type>(expression)
通过const_cast运算符,也只能将const type*转换为type*,将const type&转换为type&。
也就是说源类型和目标类型除了const属性不同,其他地方完全相同。
#include<iostream> using namespace std; void ConstTest1(){ const int a = 5; int *p; p = const_cast<int*>(&a); (*p)++; cout<<a<<endl; cout<<*p<<endl; } void ConstTest2(){ int i; cout<<"please input a integer:"; cin>>i; const int a = i; int &r = const_cast<int &>(a); r++; cout<<a<<endl; } int main(){ ConstTest1(); ConstTest2(); return 0; } 输出: 5 6 若输入7 则输出8
解释为什么输出8:
当常变量为 const int j =i 时,直接输出j时,编译器不能进行优化,也就是不能够直接用i代替j;
当常变量为const int j =5时,直接输出j时,编译器会进行优化,也就是用文字常量5直接代替j;
标签:ast 方法 amp 属性 ssi 模板 str 引用 运算
原文地址:http://www.cnblogs.com/wft1990/p/6697566.html