婚礼策划网 加入收藏  -  设为首页
您的位置:婚礼策划网 > 摄影技术 > 正文
C++ 类的各种公开、私有、保护成员定义的实际意义?
C++ 类的各种公开、私有、保护成员定义的实际意义?
提示:

C++ 类的各种公开、私有、保护成员定义的实际意义?

  C++的公有成员、私有成员、保护成员都属于语法范畴,它的作用主要是为了实现C++的面向对象与继承特性。

  1、公有成员是接口,打个比方来说,以计算机为例,对于不懂计算机的人来说,不需要告诉对方内部CPU如何动作、内存如何管理,只需要告诉它电源开关在哪里即可,这个电源开关就相当于公开成员,它是一个操作界面。C++面向对象程序设计的一个关键点即是接口编程。拿Windows来说,亦是如此,普通用户通过GUI接口即explorer.exe来完成操作,系统管理员通过控制台接口即cmd命令提示符来操作,程序员通过SDK中的API函数来完成操作。


  2、私有成员 ,这只是变换了一个名称,程序=数据结构+算法,算法是用来操作数据的,一个程序不可能是没有数据的,私有成员即是用户通过接口操作的对象。因此,一般私有成员都是数据成员,偶尔会有一些私有的成员函数,即不想开放给用户的接口。

  3、保护成员,C++一个很重要的特性是实现继承,也叫做派生,派生一词最早出现于亚理士多德的《工具论》,中国古代的诸子百家中有一家叫做名家,著名的白马非马的故事就是出自于此,派生的概念类似于马和白马的关系。用数学集合的观点来看,马是一个集合,白马是马的子集,派生实际上实现的就是这种子集关系,子类要继承基类的数据成员,就牵涉到一个数据共享的问题,因为继承的时候,基类的私有成员在派生类中依然是基类的私有成员,否则,私有成员就没有任何意义,基类的公有成员在派生类中依然是公有的,因此这里面有一个局限性,即如何让基类的成员,能成为派生类的私有成员,这样能够更好的实现基类的可扩展性,因此才引入了保护成员的概念。

一个关于C++程序的问题。。。。
提示:

一个关于C++程序的问题。。。。

/*如下代码完全是复制你的代码得到。在CB上运行没有任何问题。你所说的要按两下回车问题可能是你的中文输入法设置导致。我用万能五笔输入按一下就行了。可以这样试一试。当第一行输入结束后,把输入法切换到英文状态。接着再按回车,看看程序是否往下运行,就知道了。*/#include#include#includeclass StoreQuote {public: std::string quote, speaker; std::ofstream fileOutput; StoreQuote(); ~StoreQuote(); void inputQuote(); void inputSpeaker(); bool write();};StoreQuote::StoreQuote() { fileOutput.open("test.txt", std::ios::app);}StoreQuote::~StoreQuote() { fileOutput.close();}void StoreQuote::inputQuote() { std::getline(std::cin, quote);}void StoreQuote::inputSpeaker() { std::getline(std::cin, speaker);}bool StoreQuote::write() { if (fileOutput.is_open()) { fileOutput << quote << "|" << speaker << "\n"; return true; } else { return false; }}int _tmain(int argc, _TCHAR* argv[]) { StoreQuote quote; std::cout << "请输入一句名言:\n"; quote.inputQuote(); std::cout << "请输入作者:\n"; quote.inputSpeaker(); if (quote.write()) { std::cout << "成功写入文件^_^"; } else { std::cout << "写入文件失败T_T"; return 1; } getchar(); return 0;}