c++ const

来源:互联网 发布:出货单打单软件 编辑:程序博客网 时间:2024/06/06 07:17
const的使用方法 
在全局定义 const float PI=3.1415926 在类中定义   class A {...   
  A(int size);   const int SIZE; }; 
A::A(int size):SIZE(size) {   ... } 
对参数和函数的定义(const只能修饰输入参数,不能修饰输出参数) const int x=1; 表示x的值是1,在程序中不能改变; 
const int* x; 表示x代表的地址所指向的内容是不能改变得; int const* x; 与const int* x;的表示的意思一样; int * const x; 表示x代表的地址是不能改变的;  
当是输入参数时,不需要是void Func(const int i),void Func(const int& i),可以是void Func(int i) 因为输入参数采用"值传递"(const int i),由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const修饰; 
不用const int& i的原因在于内部数据类型的参数不存在构造、析构的过程,而复制也非常快,"值传递"和"引用传递"的效率几乎相当.  
当是输入参数时,不需要是void Func(const A a),void Func(A a),可以是void Func(A& a)或void Func(const A& a) 
不用const A a,A a的原因是函数的效率比较低,因为函数体内将产生A类型的临时对象用于复制参数a,而临时对象的构造、复制和析构过程都需要消耗时间 
最好用const A&a的原因是A&a中的a可以被改变,A&a和const A&a的好处在于都不会产生临时对象,效率高;  
const A Func(const A&a )const的好处 
第一个const表示返回的是个内部产生的对象,它不能被修改 const A Func(...) {...} 
const A a=Func(...);//不能是A a=Func(...); 
第二个const表示输入的参数是引用传递,函数内部不会产生临时对象,而且这个对象不能被内部修改 

第三个const表示此函数内部的所涉及的数据成员不能修改 

class Stack { 


        var cpro_psid = "u2787156";
        var cpro_pswidth = "966";

        var cpro_psheight = "120";

        int m_num; 

       int GetCount(void) const;   

       int Pop(void);

 } 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 本科导师威胁学生不让毕业怎么办 意向导师名额满了怎么办? 扔的瓶子被限制怎么办 左钝缘支起始部重度狭窄怎么办 吃了抑郁症药困怎么办 如果股票退市持股人怎么办 电信身份信息审核失败怎么办 打完肌肉针肿了怎么办 refa掉了一个球怎么办 左腿比右腿粗怎么办 产妇上火怎么办吃什么下火呢 哺乳期上火怎么办吃什么下火 前扣内衣有点紧怎么办 橱柜做了小10厘米怎么办 一个月宝宝体检胸围35怎么办 月经量少脸上长斑怎么办 下压100上压160怎么办 怎么办去台湾新的驻签 学生去韩国旅游签证怎么办 猪的眼睛赛肿了怎么办 纹眉没有修复霜怎么办 衣服搞到走珠露香水洗不掉怎么办 涂牙膏把脸烧伤怎么办 月经血排不出来怎么办 猫眼角膜掉了一块怎么办 腰酸痛直不起腰怎么办 白血病移植后复发了怎么办 斐讯k2红灯常亮怎么办 洗衣机把烟洗了怎么办 吸烟吸的恶心想吐怎么办 显示双方信息的明细怎么办 电脑关不了机了怎么办 xp系统关不了机怎么办 灯的开关闭不了怎么办 灯的开关按不动怎么办 灯开关按不动了怎么办 灯的开关摁不动怎么办 微信群500人满了怎么办 作业帮搜不到题目怎么办呢 金融社保卡密码忘了怎么办 工作未完想从国企辞职怎么办