const修饰普通变量:
c:
const译为常量,但在c中const并不是真正意义上的常量,是可以修改的,所以我们常称c中的const变量为只读变量
const int a = 10;
a = 100; /*错误*/
int *p = &a;
*p = 100; /*正确*/
c++:
在c++中const是真正的常量,只能传递,不能修改
const int a = 10;
a = 100; /*错误*/
int *p = &a; /*错误*/
const int *p2 = &a; /*正确*/
const修饰指针变量
const int *a = 100; /*const 修饰的是*a,意味着a指向空间的值不能改变,但a指向的空间可以修改*/
int b = 200;
*a = 300; /*错误*/
a = &b; /*正确*/
int *const a = 100; /*const 修饰的是a,意味着a指向空间不能改变,但a指向的空间的内容可以修改*/
int b = 200;
*a = 300; /*正确*/
a = &b; /*错误*/
const int *const a = 100; /*a指向的空间和空间的值都不能改变*/
*a = 300; /*错误*/
a = &b; /*错误*/
const 修饰类对象和函数:
#include <iostream>
using namespace std;
class A
{
public:
A(int i)
:x(i)
{}
void set(int i);
/* 做为成员函数,const可以构成重载 */
int get(void);
int get(void) const; /* 不能修改类对象的成员变量,定义和声明都要加const关键字 */
private:
int x;
};
inline void A::set(int i)
{
this->x = i;
}
int A::get(void) const
{
return this->x;
}
int main()
{
const A a(1);
// a.set(2); // const修饰的类对象只能调用const函数
cout << a.get();
system("pause");
return 0;
}