常数据成员
#include <iostream>
using namespace std;
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,b,并以100,0为初值通过构造函数的初始化列表给对象的常数据成员赋初值
A a1(100),a2(0);
a1.print();
a2.print();
return 0;
}
常引用
#include <iostream>
#include <cmath>
using namespace std;
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<<dist(myp1,myp2)<<endl;
return 0;
}