Fork me on GitHub
摘要: 摘要:1)“引用必须用左值来初始化”基本上着意味着引用的初始化物必须具有一个地址,也有一个值(→常见错误6)。不过谈及指向常量的引用时,事情就开始变得复杂了。指向常量的引用仍然必须用左值来初始化,不过编译器很乐意——在特定的情况下——为此从一个非左值出发来创建一个左值(临时对象):const int &r3=12;//没问题引用r3指向编译器隐式分配内存并创建的匿名int类型对象。一般情况下,这种编译器的生存期持续到权表达式结束处①。不过“在这种特例下,标准网开一面,保证临时对象会和以其为初始化物的引用共存亡”。“请注意该对象与以其为初始化物的引用之间并无联接纽带”。②2)“编译器还会 阅读全文
posted @ 2012-09-30 17:14 zhanjindong 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 首先要理清几个术语:常量指针(const pointer)和指向产量的指针:常量指针(const pointer)是指一个拥有常量值得指针,其中并不包含“其指涉物是否为常量”的任何暗示。const char *pci;//指向常量的指针char *const cpi=0;//常量指针char const *pci2;//仍然是指向常量的指针const char * const cpci=0;//指向常量的常量指针。char *ip;//普通的指针“C++标准规定允许进行‘增加常量性’的(无条件)类型转换”。举例来说,我们可以把一个指向非常量的指针复制到一个指向常量的指针。这样我们就可以——当. 阅读全文
posted @ 2012-09-30 17:13 zhanjindong 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 摘要:1)“字面常量没有地址,永远不能改变其值”③2)关于左值和右值得理解误区:左值并不是指能放在赋值号左边的值,右值自然也不是指能放到赋值号右边的。左值可以放在赋值号右边,但右值一定只能是在赋值号的右边。但左值也不一定能放在赋值号的左边:const int i;对于常量i是不能放在赋值号的左边的,但其的的确确是个左值,它是一个不能改变的左值。正确的理解是:左值是“能放置值得地方”,而右值就是没有与之相关的地址的值。3)关于常量性的理解:int i=10;const int *ip=&i;i=10;//没问题,约束的不是i的一般操作,而是通过ip对i的操作*ip=13;//错误“con 阅读全文
posted @ 2012-09-30 17:12 zhanjindong 阅读(290) 评论(0) 推荐(0) 编辑
TOP