C++私有成员函数
到目前为止,我们所看到的所有类成员函数都是公共函数,这意味着它们可以通过类外部的程序代码调用。但是,类也经常需要一些函数来进行内部处理,这样的函数不应该由类外的代码调用,它们应该被声明为私有。
下面的程序显示了具有私有函数的类的示例。SimpleStat 类被设计用于从发送给它的一组非负整数中查找和报告信息,如平均值和最大数字。但是,一旦某个数字已经被接收并被添加到累计汇总,那么它将不被保留,所以该类不能等以后再确定哪个数字是最大的,它必须通过检查其读取的每个数字来查看它是否大于之前读取的任何数字。isNewLargest 私有函数正是执行此操作的。
下面的程序显示了具有私有函数的类的示例。SimpleStat 类被设计用于从发送给它的一组非负整数中查找和报告信息,如平均值和最大数字。但是,一旦某个数字已经被接收并被添加到累计汇总,那么它将不被保留,所以该类不能等以后再确定哪个数字是最大的,它必须通过检查其读取的每个数字来查看它是否大于之前读取的任何数字。isNewLargest 私有函数正是执行此操作的。
#include <iostream> 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<double>(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
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算