类内CONST

来源:互联网 发布:淘宝店铺收藏链接生成 编辑:程序博客网 时间:2024/05/19 14:18
/*const 不可以用于构造与析构创建对象的时候加const,是常量对象,无法修改数据,只能引用尾部有 const 的方法类的成员如果是const 初始化有二种方式。一:默认初始化,第二构造初始化,但不可以在构造函数内部初始化类中的const 变量成员,无法直接修改,可以间接修改类成员函数,返回值是const饰的,返回是常量。参数是const修饰的,参数只可读不可写。尾部是const修饰的,常量对象只能调用尾部修饰的const函数*/#include<iostream>using namespace std;class MyClass{public:int x;int y;//const int z =3; //常量数据的初始化:1:定义时直接初始化、//2:构造函数之后,MyClass(int a, int b) :x(a), y(b), z(a+b) 不允许构造函数内部初始化const int z ;  //常量必须初始化MyClass(int a, int b) :x(a), y(b), z(a+b){//z = a + b;//不允许这样初始化常量。}void show(){cout << "x:" << x << " y:" << y << endl;}void showit()const{//只能读不能写//x = 99;cout << "x:" << x << " y:" << y << endl;}//保护参数不能被修改void change(const int a, const int b){x = a;y = b;}//返回常量const int get()const{return x;}};void main16A(){MyClass mc(10, 20);mc.show();mc.showit();//常量对象,只能调用带 const 的方法,并无法修改数据。const MyClass mc1(20, 30);cout << mc1.z << endl;//mc1.show();  //不能将“this”指针从“const MyClass”转换为“MyClass &mc1.showit();int *p = const_cast<int *>(&mc.z);*p = 30;//间接修改cout << mc.z << endl;cin.get();}

0 0
原创粉丝点击