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 的额外工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值