常类型的对象必须进行初始化,而且不能被更新。
常引用:被引用的对象不能被更新。
const 类型说明符 &引用名
常对象:必须进行初始化,不能被更新。
类名 const 对象名
常数组:数组元素不能被更新。 类型说明符 const 数组名[大小]
常指针:指向常量的指针
例:常引用作形参
#include<iostream.h>
void display(const double& r);
int main()
{ double d(9.5);
display(d);
return 0;
}
void display(const double& r)
//常引用作形参,在函数中不能更新 r所引用的对象。
{ cout<<r<<endl; }
常对象举例:
class A
{
public:
A(int i,int j) {x=i; y=j;}
...
private:
int x,y;
};
A const a(3,4); //a是常对象,不能被更新
用const修饰的对象成员:
常成员函数 使用const关键字说明的函数。
常成员函数不更新对象的数据成员。
常成员函数说明格式:
类型说明符 函数名(参数表)const;
这里,const是函数类型的一个组成部分,因此在实现部分也要带const关键字。 const关键字可以被用于参与对重载函数的区分
通过常对象只能调用它的常成员函数。
常数据成员 使用const说明的数据成员。
常成员函数举例:
#include<iostream.h>
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;
}
int main()
{ R a(5,4);
a.print(); //调用void print()
const R b(20,52);
b.print(); //调用void print() const
}
常数据成员举例:
#include<iostream.h>
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; }
int main()
{/*建立对象a和b,并以100和0作为初值,分别调用构造函数,通过构造函数的初始化列表给对象的常数据成员赋初值*/
A a1(100),a2(0);
a1.print();
a2.print();
}