天天看點

const 資料共享與保護

常資料成員

#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;
}