设为首页 加入收藏

TOP

C++中const的使用
2014-11-24 08:34:44 来源: 作者: 【 】 浏览:0
Tags:const 使用

1. const string* p和String * constp


助记方法:* 读成 pointer to ,倒着读


const string* p
const 在 * 左边,说明定义的是指向string常量的指针,p指针可以改变,但是原来指向的string不能变
倒着读:p a const pointer to string
string const * p; //因为没有const*,所以const 跟随前面的string



String * const p
const 在 *右边,说明定义的是常指针,常指针指向一个string,就是说p不允许再指向别处,p不能变,但是string可以变
倒着读:p is a pointer to const string



比如:
char * const p;
p++ 不可以,因为你改变了P


const char *p;
p++ //可以



2.const作为函数形参
如果有修改参数值的必要,就用一般引用, 表示 "我这个函数有可能会修改你传递过来的参数",采用引用避免的复制实参拷贝的消耗;
如果仅仅读取参数值, 那么就用const引用, 表示"我这个函数绝对不会修改你传递过来的参数",这样的好处是const实参或者非const形参都可以调用该函数;
特别是注意:"hello world" 是constchar*类型,不能作为char*的实参,对于变量的约束,允许加强,当绝对不能削弱



3.const和非const之间的转换
const_cast(expression)
常量指针被转化成非常量指针,并且仍然指向原来的对象;
常量引用被转换成非常量引用,并且仍然指向原来的对象;
另外还可以用定义一个另外的变量实现copy转换。


类似的cast函数:
static_cast (expression)
该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性
reinterpret_cast (expression)
dynamic_cast (expression)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇复制二叉树(非递归实现) 下一篇C/C++代码命名和格式规范

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)