c 语言函数公有私有区分,C++私有成员函数
到目前為止,我們所看到的所有類成員函數都是公共函數,這意味著它們可以通過類外部的程序代碼調用。但是,類也經常需要一些函數來進行內部處理,這樣的函數不應該由類外的代碼調用,它們應該被聲明為私有。
下面的程序顯示了具有私有函數的類的示例。SimpleStat 類被設計用于從發送給它的一組非負整數中查找和報告信息,如平均值和最大數字。但是,一旦某個數字已經被接收并被添加到累計匯總,那么它將不被保留,所以該類不能等以后再確定哪個數字是最大的,它必須通過檢查其讀取的每個數字來查看它是否大于之前讀取的任何數字。isNewLargest 私有函數正是執行此操作的。
#include
using namespace std;
class SimpleStat
{
private:
int largest; // The largest number received so far
int sum; // The sum of the numbers received
int count; // How many numbers have been received
bool isNewLargest(int); // This is a private class function
public:
SimpleStat(); // Default constructor
bool addNumber(int);
double getAverage();
int getLargest()
{
return largest;
}
int getCount()
{
return count;
}
};
SimpleStat::SimpleStat()
{
largest = sum = count = 0;
}
bool SimpleStat::addNumber(int num)
{
bool goodNum = true;
if (num >= 0) // If num is valid
{
sum += num; // Add it to the sum
count++; // Count it
if(isNewLargest(num)) // Find out if it is
largest = num; // the new largest
}
else //num is invalid
goodNum = false;
return goodNum;
}
bool SimpleStat::isNewLargest(int num)
{
if (num > largest)
return true;
else
return false;
}
double SimpleStat::getAverage()
{
if (count > 0)
return static_cast(sum) / count;
else
return 0;
}
//Client Program
int main()
{
int num;
SimpleStat statHelper;
cin >> num;
while (num >= 0)
{
statHelper.addNumber(num);
cin >> num;
}
cout << "\nYou entered "<< statHelper.getCount() << " values. \n";
cout << "The largest value was " << statHelper.getLargest () << endl;
cout << "The average value was " << statHelper.getAverage () << endl;
return 0;
}
程序輸出結果:
7 6 8 8 9 7 7 -1
You entered 7 values.
The largest value was 9
The average value was 7.42857
程序中,私有函數 isNewLargest 的編寫目的是創建一個更模塊化的類,使代碼更易懂。雖然程序沒有這個函數也可以正常編寫完成,但是,在那種情況下,addNumber 函數本身將不得不處理比較新值與 largest 的額外工作。
總結
以上是生活随笔為你收集整理的c 语言函数公有私有区分,C++私有成员函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在WorkNC中快速建立坐标管理器
- 下一篇: Kingofark的人工智能启示录