const int size = 1024;
int array[size];//OK
size在程序编译时就知道其值
file b:
extern const int buffersize
buffersize
在某一个地方有,但不一定是const
,但是在file b
中是const
的,不能修改buffersize
int a = 11;
const int *p0 = &a;
int *const p1 = &a;
int const *p2 = &a;
const int *
与int const *
等价(const
都在*
前面),是说int *
是不可更改的(不准确的描述),即通过该指针不可更改指针所指向的内存的内容
int * const
是修饰point
的(const
在*
后面),该point
是不可更改的,即该point
不可指向其它内存,但可更改point指向的内存的内容
#include <iostream>
using namespace std;
class A{
int i;
public:
A() : i(0){ }
void f(){cout << "f ()" << endl;}
void f() const {cout << "f() const" << endl;}
};
int main()
{
const A a;
a.f();
return 0;
}
运行结果:f() const
C++代码都要先转换为C代码:
void f(A* this){cout << "f()" << endl;
void f(const A* this){cout << "f() const" << endl;
这里void f() const
中的const
指代的是this
,这两个函数是overload
关系
网友评论