一、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不能指向整型常量
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本身(指向)不能发生变化
(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本身(指向)不能发生变化