常类型
常引用:被引用的对象不能被更新。
const 类型说明符& 引用名
常对象:必须进行初始化,不能被更新。
类名 const 对象名
常成员函数
类型说明符 函数名(参数表) const
常数组:数组元素不能被更新
类型说明符 const 数组名[大小]
常指针……
常类型定义一定是一行定义,一次性初始化,不能分行写。
const i=3; //正确
const a(3); //正确
const i; //错误!!
i=3;
1、常引用做形参
#include<iostream.h>
void display(const double& r);
int main()
{
double d=9.5; //定义了常引用,此处d和r都不能够再次赋值
display(d);
return 0;
}
void display(const double& r)
{cout<<r<<endl;}
2、常对象
class A
{
public:
A(int i,int j){x=i;y=j;}
private:
int x,y;
}
A const a(3,4); //a是常对象,不能被更新。
3、常成员函数
class R
{
public:
R(int r1,int r2){R1=r1;R2=r2;}
void print() const;
void print();
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(); //调用 void print()
const R b(20,52);
b.print(); //调用 void print() const
}
4、常数据成员
#include<iostream.h>
class A
{
private:
const int a; //常数据成员
static const int b; //静态常数据成员
public:
A(int i);
void print();
const int& r;
};
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();
}
/*
输出结果
100:10:100
0:10:0
*/