const用法总结
1.在使用const定义变量时要初始化,因为定义之后就不能更改了。
2.const在 * 左边的修饰的是指向的内容,const在 * 右边的修饰的是指针本身。
const修饰基本数据类型
int const a = 10; //定义一个不能进行更改的常量a=10
const int a = 10; //定义一个不能进行更改的常量a=10
int const *a = &b; //指向常数的指针,即指针本身的值是可以改变的,但是指向的内容是不可以改变的
const int *a = &b; //指向常数的指针,即指针本身的值是可以改变的,但是指向的内容是不可以改变的
int * const a = &b; //常指针,指针本身的值是不可改变的,但是指向的内容是可以改变的
const int * const a = &b;
//指向常数的常指针,即指针本身和指向的内容都是不可以改变的。
const int &a = 100; //常数引用,即不能改变引用的值。
const在函数中的使用
void func(const int a);
//作为参数使用,说明函数体内不能对传进去的参数进行修改。常用来保护参数不被破坏。
const int func();
//作为函数返回值使用,说明函数的返回值是不能被改变的,在取得返回值时应用const int a = func()。
int func() const;
//常函数,说明函数是不能修改类中的成员的值的,只能用于类的成员函数中。
const在类中的使用
对const成员变量的初始化,不能在变量声明的地方,必须在类的构造函数的初始化列表中完成,即使在构造函数内部赋值也是不行的。
class A
{
private:
const int size=100; //错误,不能在声明变量的地方初始化
const int SIZE;
static int const data;
public:
A(int size);
}
int const A::data = 100; //静态变量的赋值方法必须放在类外定义。
A::A(int size) : SIZE(size)
{
...
}
/*
*赋值的方法也是错误的
*A::A(int size)
*{
* SIZE = size;
*}
*/
int main()
{
A a(100);
A b(200);
return 0;
}
const定义常量对象,以及对常量对象的使用
class test
{
public:
test():x(1)
{
y=2;
}
~test()
{}
void set(int yy)
{
y=yy;
}
int getx() const
{
return x;
}
//private:
const int x;
int y;
};
void main()
{
const test t;
t.set(33); //error,常量对象只能调用常量函数,别的成员函数都不能调用。
t.getx();
}