/*
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();
}
类内CONST
最新推荐文章于 2024-06-15 16:46:55 发布