C++中的const使用
1、常对象
const int n=10;
n=20;
常对象只能调用它的常成员函数,不能调用其他成员函数(常对象唯一对外接口方式)
2、常成员函数
void print() const;
常成员函数不会更改目的对象的数据成员的值 可以用来区分重载函数 因此无需改变对象状态的成员函数都应当使用const
3、常数据成员
class A{
public:
A(int i);
void print();
private:
const int a;
static const int b;
};
const int A::b=10;
A::A(int i):a(i){}
void A::print(){
cout<<a<<":"<<b<<endl;
}
int main(){
A a1(100),a2(0);
a1.print();
a2.print();
return 0;
}
4、常引用
在声明引用时用const修饰,被声明的引用就是常引用 常引用作形参,实参不会被更改 非const的引用只能绑定普通的对象,常引用可以绑定到常对象
class Point{
public:
Point(int x=0,int y=0):x(x),y(y){}
int getX(){return x;}
int getY(){return y;}
friend float dist(const Point &p1,const Point &p2);
private:
int x,y;
}
float dist(const Point &p1,const Point &p2){
double x=p1.x-p2.x;
double y=p1.y-p2.y;
return static_cast<float>(sqrt(x*x+y*y));
}
int main(){
const Point myp1(1,1),myp2(4,5);
cout<<"The distance is:";
cout<<dist(myp1,myp2)<<endl;
return 0;
}
5、const与指针
const int *p; 指针地址变,指针值不变 int * const p; 指针地址不变,指针值变 const int * const p;指针地址和值都不变
|