条款23:宁可用非成员,非友元函数来替代成员函数 1、非成员函数提供了更好的封装性,这个函数内不能访问类的私有成员,封装的越严密我们对类的数据就可以弹性越大的操纵,因为可见这些数据的客户越少,反之数据影响的客户也就越少。 2、c++比较自然的做法-(关系到标准库numplace的组织结构),可以把不 ...
分类:
编程语言 时间:
2016-07-31 22:01:21
阅读次数:
174
1.友元 1.定义为谁友元,就在谁的类中用关键字friend声明其要定义的友元。 2.一些函数不是类的一部分,但又频繁访问类的数据成员,此时可定义为友元函数,也可定义友元类。 3.友元只能发生在异类之间,同类之间无隐私。 4.作用:提高程序的运行效率,但破坏了类之间的封装和隐藏性,使得非成员函数可以 ...
分类:
编程语言 时间:
2016-07-30 18:11:20
阅读次数:
170
STL头文件:#include<queue> 优先队列: 默认从大到小排列:priority_queuee<node>q; 自定义优先级的三种方法: 1.重载操作符: (const node &a是用引用传递,比按值传递node a效率更高,效果是一样的) 2.自定义比较函数模板结构: 3.定义友元 ...
分类:
其他好文 时间:
2016-07-21 14:40:56
阅读次数:
246
模板类的友元重载和普通类的友元重载有不同之处,可以参考这篇CSDN博客http://blog.csdn.net/ozwarld/article/details/7770808 ...
分类:
其他好文 时间:
2016-07-16 00:00:33
阅读次数:
361
友元使得能够为类开发更灵活的接口。类可以将其他函数、其他类和其他类的成员函数作为友元。在某些情况下,可能需要前向声明,需要特别注意类和方法声明的顺序,以正确地组合友元。潜逃类是在其他类中生命的类,它有助于设计这样的助手类,即实现其他类,单必须是共有接口的组成部分。C++机场机制为处理拙劣的编程事件, ...
分类:
编程语言 时间:
2016-07-14 19:10:10
阅读次数:
129
运算符重载使得用户自定义的数据以一种更简洁的方式工作。 重载运算符函数可以对运算符作出新的解释,但原有基本语义不变: 不改变运算符的优先级。 不改变运算符的结合性。 不改变运算符所需要的操作数。 不能创建新的运算符。 运算符重载的语法形式 运算符重载是一种特殊的成员函数或友元函数。 成员函数的语法形 ...
分类:
其他好文 时间:
2016-07-12 23:00:44
阅读次数:
220
几个关键点: 需要前置声明!--奇怪的是别人告诉我也可以不需要,但我这里不行! 友元函数的函数名后面的<>,必须要有。 ...
分类:
编程语言 时间:
2016-07-12 19:38:04
阅读次数:
148
C有数组、结构体、指针、函数、宏 C++有命名空间、引用、默认参数、模板、函数重载、自定义操作符、内联、构造/析构、私有/保护成员、友元、异常。 一、数据类型的声明 1. C++允许数据声明出现在程序的任意位置 C代码(异常) C++代码(正常) 2. c++允许使用结构体名定义实体 C代码(异常) ...
分类:
编程语言 时间:
2016-07-12 10:30:29
阅读次数:
170
12.6.1 重载<<运算符要重新定义<<运算符,以便将它和cout一起用来显示对象的内容,请定义下面的友元运算符函数:ostream & operator<<(ostream & os, const c_name & obj){ os << ...; // display object conte ...
分类:
编程语言 时间:
2016-07-12 09:04:16
阅读次数:
133
友元函数可以访问类的私有变量,还可以访问私有函数 1 类本身的友元函数 虽然在类中说明友元函数,但它并不是类的成员函数,所以可以在类外面像普通函数那样定义这个函数。 在类中说明友元函数带friend,在类外面定义这个函数不带friend 2 将成员函数用做友元 3 将一个类说明为另一个类的友元 若F ...
分类:
其他好文 时间:
2016-07-11 23:43:57
阅读次数:
241