C++第三次做業

共享數據的保護:

  類很好地實現了數據的封裝,經過隱藏保證了安全性。但上一節的友元函數及靜態數據成員、靜態函數則是在共享的過程當中增長了數據改變的風險。那怎麼能在共享時有效地保護數據。ios

而由C語言的知識咱們知道每每設定常量來防止數據被更改,在C++中也一樣有常量的概念。安全

常對象:

  常對象的數據成員在對象的整個生存期間內都不能改變,且必需要初始化。函數

 

  語法聲明: const 類型說明符 對象名;spa

class A {
public:
	A(int i,int j):x(i),y(j){}
private:
	int x,y;
};           
const  A a(3,4)

常成員函數:

  Const修飾的函數爲常成員函數。     語法聲明:類型說明符  函數名(參數表)constorm

注:1.經過常對象只能調用它的常成員函數,這就是常對象惟一的對外接口方式。對象

    2.常成員函數不能更新目的對象的數據成員,與第一點也是相互照應。blog

    3.const關鍵字還能夠進行重載函數的區分。接口

 

#include <iostream>
using namespace std;

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();
	const R b(20, 52);
	b.print();       //此處調用的是帶const的函數
	return 0;        //結果爲5:4  20;52
	system("pause");
}

常數據成員:

  若類中說明了常數據成員,那函數不能在經過調用改變它的值。ci

#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 a1(100), a2(0);
	a1.print();
	a2.print();
	return 0;
}

常引用:

  const 類型說明符 &引用名;函數聲明時用const修飾則不會對實參修改。io

  實參爲常對象或普通對象時,只能把對象視爲常對象。

相關文章
相關標籤/搜索