最忌諱的就是利用C++寫C代碼!利用C++寫C代碼最主要的一個特點之一把類里面所有的數據都聲明成public的,本文就淺談了一下如何利用public和private將代碼分開的方法~~~
#define:
1.關鍵字public可以將類的成員說明為是公有的,及可以被該類的所有成員所訪問;
2.關鍵字private可以將類的成員說明為是私有的,它不能直接被對象訪問。
2.關鍵字private可以將類的成員說明為是私有的,它不能直接被對象訪問。
其實,說白了就是對於公有成員,我們可以利用對象來進行直接調用,比如說:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class
Cat
{
public
:
int
weight;
};
int
main()
{
Cat cat;
//聲明一個對象
cat.weight=5;
cout<<
"The cat's weight is "
<<cat.weight<<endl;
return
0;
}
|
在上面這個程序中,由於Cat類中的成員函數weight被聲明成了公有成員,那么我們就可以在主窗口中首先創建一個Cat類的對象(cat),並利用.運算符就可以直接調用weight這個數據成員了。
但是,值得注意的是,如果我們想要把上面程序中的public刪除掉,改成private。那么這個時候,我們就無法在由Cat類所聲明的對象中調用這個weight成員。這是,只有通過在類中設置一個
公共的接口函數,才能實現對weight的訪問,如下例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class
Cat
{
public
:
void
setWeight(
int
w){weight=w;}
//設置重量
int
print(){
return
weight;}
//返回重量的大小
private
:
int
weight;
};
int
main()
{
Cat cat;
cat.setWeight(5);
//設置cat的重量為5
cout<<
"The cat's weight is "
<<cat.print()<<endl;
return
0;
}
|
通過這種方式,利用類中的公共接口函數,我們就可以訪問調用類的私有成員。那么這樣做的好處是什么呢?
好處就是:提高代碼的安全性,防止造成錯誤的輸入與輸出。因為在類的公共接口函數中,我們可以對輸入的具體值進行限定,那么這樣就不會造成數據的錯誤。比如說下例:
class
Cat
{
public
:
void
setWeight(
int
w)
{
if
(w>0&&w<50)
//這里,我們就可以通過一條簡單的if語句啟動控制作用
weight=w;
}
//設置重量
int
print(){
return
weight;}
//返回重量的大小
private
:
int
weight;
};
|
==================================總結========================================
在一般情況下,我們可以將類的數據成員設置為私有的,然后調用類中的公共該接口函數來訪問他們。這樣做的好處是將數據的賦值與讀取分開操作。比如說上例里面,我們就將數據的賦值函數設置成setWeight(int),將數據的讀取函數設置成print()。這樣的好處就是賦值函數不需要考慮讀取函數是如何工作的,讀取函數中的代碼改變也不會影響到相應的賦值函數。那么這樣就提高了代碼的可重用性。另外,由於將數據成員進行了私有化,那么各個對象不可以直接訪問並修改數據。比如說上例中想要直接修改weight的數值就是不合法的,只有通過公共的接口函數才能訪問並且修改到類里面的私有數據成員(weight)。
這樣的設置時程序更容易維護,並且可避免一些不應有的錯誤。