关于Const关键字

一、Const
(1)变量
const int a=2;//a中的值是不能发生变化的,定义常量时,应该立刻给其赋初始值。
也可以写成int const a = 2;  [a=a+2  X错误]


(2)指针
int const *p;//常量指针。指针指向的是一个整型常量,p不是常量,p是变量。
也可以写成const int *p;


int *const p;//指针常量。p本身就是一个常量,定义时需要初始化,p所指向的地址处的内容可以发生变化。
//p不能指向整型常量

(3)字符串

const char *p; //*p是const,p可变    指针指向可以变,但指针指向地址处的内容不能变
const (char *) p;//p是const,*p可变   指针指向地址处的内容可以变,但是指针指向不能变
char* const p; //p是const,*p可变
const char* const p; //p和*p都是const 

char const * p;// *p是const,p可变
(char*) const p;//p是const,*p可变
char* const p;// p是const,*p可变
char const* const p;// p和*p都是const
(4)class对象声明中  常对象(所有成员变量都是常量,不能修改)

通过常对象只能调用常函数,但是常函数可以被该类的任何对象(常对象或者非常对象)访问

const CStudent stA(赋初始值)
void CStudent::print() const   //const写在后面
{ }


常数据成员变量要用参数列表进行初始化    【假如id是常数据成员变量】
CStudent(int id, string nameA) :id(id), name(nameA)//先赋值id,再赋值name
{


}
或者
CStudent(int id, string nameA) :id(id)//先赋值id,再赋值name
{
this->name = t.name;
}

this指针是指针常量,this ==>(Time为类) Time* const this; this=&a;(a为类对象)
this指向的地址处的内容可以变化,this本身(指向)不能发生变化

猜你喜欢

转载自blog.csdn.net/sinat_22991367/article/details/78996643