面向对象——私有成员
2016-02-24 14:23
197 查看
私有成员:私有成员变量,私有成员函数;
所以,一个不被当前类所调用的私有成员函数,是无意义的。这点体现在 Eclipse 这么优秀的 IDE 中即是:对一个不被本地调用的私有成员函数,会提示如下的警告信息:
私有成员变量和私有成员函数一样只开放给自己,所谓只开放给自己,
对私有成员函数而言,私有成员函数仅供当前类的其他私有成员函数以及公有函数调用,所以在设计与实现一个类时,应当优先设计一个类的私有成员函数,然后是依赖于该私有成员函数的其他函数。
对私有成员变量而言,即是除了当前所属类,其他类无权访问,哪怕是其子类尽管持有该成员。
那么如何在实现子类的构造函数时,实现对父类私有成员的赋初值,是私有成员变量,而非 protected 成员变量;
print(std::ostream& ) 与 std::ostream& operator<<(std::ostream& os, SomeClass)
私有成员函数的调用时机
私有成员函数的调用时机仅发生在当前类内部,最终由当前类的其他公有成员函数所调用,因为私有成员对其他类不可见。所以,一个不被当前类所调用的私有成员函数,是无意义的。这点体现在 Eclipse 这么优秀的 IDE 中即是:对一个不被本地调用的私有成员函数,会提示如下的警告信息:
The method foo() from the type Base is never used locally
对私有成员变量和私有成员函数的认识
私有函数的存在,避免冗余代码;私有成员变量和私有成员函数一样只开放给自己,所谓只开放给自己,
对私有成员函数而言,私有成员函数仅供当前类的其他私有成员函数以及公有函数调用,所以在设计与实现一个类时,应当优先设计一个类的私有成员函数,然后是依赖于该私有成员函数的其他函数。
对私有成员变量而言,即是除了当前所属类,其他类无权访问,哪怕是其子类尽管持有该成员。
那么如何在实现子类的构造函数时,实现对父类私有成员的赋初值,是私有成员变量,而非 protected 成员变量;
class Base { public: Base(int x, int y) :_x(x), _y(y){} private: int _x; int _y; }; class Derived :public Base { public: Derived(int x, int y) :Base(x, y){} };
私有成员函数 ==》 让公有成员函数的生活更美好
equal 与 operator==、operator!=class A { public: bool operator==(const A& a) const { return equal(a); } bool operator!=(const A& a) const { return !equal(a)} private: bool equal(const A& ) const {...} };
print(std::ostream& ) 与 std::ostream& operator<<(std::ostream& os, SomeClass)
class Dataset { public: friend std::ostream& operator<<(std::ostream& os, const Dataset& ds) { ds.print(os); return os; } private: void print(std::ostream& os) { // 一直往 os 中写东西 os << "" << ...; } };
相关文章推荐
- python学习笔记四--元组
- js数据类型判断和数组判断
- AJAX
- XXX电子商务平台技术框架
- bzoj1412 狼和羊的故事 网络流
- Android之ListView中的分割线
- Tomcat中的线程池(APR和ThreadPool)
- Android权限
- android开发工具使用记录
- 三星FOTA升级,还安卓一个公道
- HDU 4001 To Miss Our Children Time(DP LIS)
- 免费的论文查重网站
- android 限定Mtp映射目录大小
- HashMap集合
- Cocos2d-x开发FlappyBird03-GameScene游戏场景初进入
- 新世纪版五笔字根背诵
- android 微信支付功能支付返回-1问题
- 2016的雪
- python 单链表
- 性能测试新手常犯错误总结(一):找不到测试点,不知为何而测