类中的const成员

来源:互联网 发布:linux备份文件命令 编辑:程序博客网 时间:2024/06/02 21:01
#include<iostream>using namespace std;class Base{const int a;public:Base(int _a):a(_a){}//Base(int _a) { a = _a; }   //error };int main(){return 0;}
在类中声明变量为const类型,但是不可以初始化

const常量的初始化必须在构造函数初始化列表中初始化,而不可以在构造函数函数体内初始化




const类成员变量是不能修改的,这很简单,对const类成员函数,只需在函数后加const即可,函数体内部对类成员变量是不能修改的

#include<iostream>using namespace std;class Base{const int const_a; int b;public:Base(int _const_a = 1, int _b=1) :const_a(_const_a) { b = _b; }int Get() const {//b = 1;//error:不能对类成员变量修改,但是如果你一定要修改,可以使用关键字mutable声明这个类成员变量,具体使用参考百度int c = b;//right,因为c是局部变量,不像b是类成员return b;}};int main(){return 0;}

#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#include<iostream>using namespace std;class Base{const int const_a; int b;public:Base(int _const_a = 1, int _b=1) :const_a(_const_a) { b = _b; }void Func(){}void ConstFunc()const{}int ConstGet() const //const成员函数{//不管是不是const成员变量,都可以使用int temp = const_a;//rightint temp2 = b;//right//Func();//error:const类成员函数不能调用非const成员函数ConstFunc();//reghtreturn b;}int NonConstGet()//非const类成员函数{//不管是不是const成员变量,都可以使用int temp = const_a;//rightint temp2 = b;//rightFunc();//rightConstFunc();//rightreturn b;}};int main(){return 0;}

但是,如果据成员是指针,则const成员函数并不能保证不修改指针指向的对象,编译器不会把这种修改检测为错误。例如,

    class Name {      public:      void setName(const string &s) const;      private:          char *m_sName;      };            void setName(const string &s) const {          m_sName = s.c_str();      // 错误!不能修改m_sName;            for (int i = 0; i < s.size(); ++i)           m_sName[i] = s[i];    // 不好的风格,但不是错误的      }  

#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#include<iostream>using namespace std;class Base{public:Base(){}void Func(){}void ConstFunc()const{}};int main(){const Base constBase;//constBase.Func();//error:const类对象不能调用非const成员函数// 在C++中,只有被声明为const的成员函数才能被一个const类对象调用。constBase.ConstFunc();//rightBase base;base.Func();//rightbase.ConstFunc();//rightreturn 0;}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 伊苏8食谱少了怎么办 u盘图标隐藏了怎么办 u盘图标不显示怎么办 u盘文件夹被隐藏怎么办 u盘恶意隐藏文件怎么办 结婚7年没孩子怎么办 htc手机时间变了怎么办 下的视频没声音怎么办 ipad很卡反应慢怎么办 微信视频声音卡怎么办 苹果6s没有声音怎么办 靠上班工资太低怎么办 楼上太吵怎么办能报警 转页风扇有噪音怎么办 住的地方太吵怎么办 租的房子太吵怎么办 苹果手机音量键坏了怎么办 xp系统声音没了怎么办 柿子烂到窗台上怎么办 小窗户厨房太暗怎么办 抬东西把腰闪了怎么办 搬重东西后腰疼怎么办 闪了腰怎么办一动就疼 窗户的把手断了怎么办 窗户寸漏不了水怎么办 窗户打开关不上怎么办 新装修的房子有甲醛怎么办 橄榄核上油花了怎么办 虫子飞到耳朵里怎么办 手被虫子咬肿了怎么办 梦见牙掉出血该怎么办 黑户急需5万块钱怎么办 家里欠了好多钱怎么办 欠好多网贷我该怎么办 外面欠了很多钱怎么办 欠了好多网贷怎么办 欠那么多钱我该怎么办 急用钱怎么办谁给指条路 晚上睡不着觉怎么办白天又醒不来 胃疼了好几天怎么办 手机移动卡怎么办副卡