const表示常量,意思就是说,被它修饰的对象,成员函数,成员变量,在整个程序运行期间,它的值得保持不变,如果你在程序中改变它,编译器将会报错。
如下面程序:
#include <iostream.h>
void display(const double &r);
void main()
{
double d(9.5);
display(d);
}
void display(const double &r)
{
//r++;报错 实参不能改变。本来引用是可以改变实参的,加了const后就不能。
cout<<r<<endl;//9.5
}
const修饰对象:常对象实例化后将不能被改变,而且常对象也不能调用其它成员函数,那么它有什么用呢?办法是,C++编译器故意设计成,常对象只能调用常成员函数,这是它唯一的对外接口。
const修饰常成员函数:void method() const; 可以重载void method().
示范代码:
class R
{
public:
R(int r1,int r2)
{
R1 = r1;
R2 = r2;
}
void print();
void print() const;
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<\":\"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<\":\"<<R2<<endl;
}
void main()
{
R a(5,4);
a.print();//调用print()
const R b(20,52);
b.print();//调用print() const
}
const修饰常成员变量:必须在构造函数参数列表中初始化。
示范代码:
class A
{
public:
A(int i);
void print();
const int &r;
private:
const int a;
static const int b;
};
const int A::b=10;//静态成员变量必须在内外定义
A::A(int i):a(i),r(a)
{
}
void A::print()
{
cout<<a<<\":\"<<b<<\":\"<<r<<endl;
}
void main()
{
A a1(100),a2(0);
a1.print();
a2.print();
}