const
常:用于修饰变量
常变量
必须初始化
const 类型 变量名=值;
const int a=100;
a=200;//错误:
a为常空间
常指针变量
const int* pa=&a;
PS:const修改了int*,所以pa空间还是变量空间可以改变,但不能通过pa修改指向的空间内容
*pa=1000;//报错
指针常变量
int* const pa=&a;
PS:const修改了pa,所以pa空间是常空间,不能修改,但可以通过pa修改指向的空间内容
pa=&b;报错
Const常量
不可改变,在定义时初始化
Const作成员
Const变量作成员变量必须初始化
Const成员变量也属于对象成员
Const成员变量必须显示的由构造器初始化
class 类名 {
public:
类名():常量名(10) //初始化列表来初始化常变量
}
Const方法
只读不可修改
可以修改(指针)指向内容。不可修改指针内容
返回值 函数名(形参) const
Const对象
Const 类名 对象;
该对象中的属性都不能通过该常对象修改,也不能访问普通方法,只访问常方法
#include<iostream>
using namespace std;
//const作成员变量,注意初始化
//常方法内只读操作,不可修改
//可以修改(指针)指向内容,不可修改变量内容
class array
{
private:
const int max;//属于对象空间,只能由对象访问
int* pbuf;
int num;
public:
//默认形参值int m=10
array(int m=10):max(m),num(0)//初始化常变量
{
pbuf=new int[10];
}
int& operator[](int index)//给空间取别名,可以通过别名修改或引用内容
{
return pbuf[index];
}
//该方法中只能读
int size() const
{
//max=100;不可修改
//num=100;不可修改
pbuf[0]=100;//可以修改 指向内容,不可修改变量内容
return num;
}
void show()
{
cout<<num<<endl;
}
};
int main()
{
array a;
a[0]=100;
cout<<a[0]<<endl;
const array b;//该对象空间的内容都不发生改变
//b.show();//调用失败,常对象只能调用常方法,
b.size();
return 0;
}
执行结果
100