String类: 一 []运算符的重载 []运算符的使用可能有以下几种情况: 对于1和2的情况,需要重载: 返回引用是为了可以实现情况2。 对于const String,3允许但4不允许,所以要返回const string& 二 +运算符的重载 为了允许情况2,+运算符需要重载为友元,同时还要有一个 ...
分类:
其他好文 时间:
2016-09-02 11:18:22
阅读次数:
175
1、= ( ) [ ] ->运算符必须是成员函数,是因为是左值操作符; 2、二元运算符建议用友元函数的原因是碰到内置类型数值放前,与对象相加减时,成员函数不支持,如:A a;1+a,得把1转换成A,再调用operator+,如果是成员函数就会有错误,无法调用; 运算符 建议使用 所有一元运算符,如+ ...
分类:
其他好文 时间:
2016-09-01 20:09:40
阅读次数:
144
本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节。 所谓template friend functions,就是使友元函数本身成为模板。基本步骤:1,在类定义的前面声明每个模板函数。eg:template <typename T> void counts(); templ ...
分类:
其他好文 时间:
2016-08-22 23:30:31
阅读次数:
281
友元函数和友元类在实际开发中较少使用,想快速学习C++的读者可以跳过本节。 一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来补充介绍一个例外——友元(friend ...
分类:
编程语言 时间:
2016-08-22 21:32:30
阅读次数:
236
嵌入式linuxC++语言(五)——友元面向对象编程的类的设计机制实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,是类与外部的通信接口。在实践中,类外的某些函数需要频繁地访问类的数据成员,将类外的函数定义为类的友元函数。除了友元函..
分类:
编程语言 时间:
2016-08-16 22:07:00
阅读次数:
200
今天看到流运算符重载的时候有几个疑问,一是为何在只需声明一次friend即可,而不是在两个类之间都使用friend,二是为何不能重载为成员函数。第一个问题:都使用friend,函数需要访问两个类的私有成员第二个问题:重载为了成员函数,但应用上出现了问题,详情见代码。usingstd:..
分类:
其他好文 时间:
2016-08-14 14:48:25
阅读次数:
158
详见http://www.cnblogs.com/assemble8086/archive/2011/10/02/2198308.html 类模板的友元有三种声明: 1)非模板类的友元类或友元函数 create函数成为所有Rect类实例化的友元,它可以访问全局对象;可以使用全局指针访问非全局对象;可 ...
分类:
其他好文 时间:
2016-08-14 14:18:51
阅读次数:
140
重载为友元函数时,一般先在类内用friend关键字声明,然后在类外具体实现(具体实现时不需friend,也不需类名) 重载为普通函数时,直接在类外给出函数实现即可(也不需要类名); 二者的区别在于友元函数对类的数据成员有直接获取权限,而普通函数还要通过类的接口访问数据成员。 ...
分类:
其他好文 时间:
2016-08-05 16:11:45
阅读次数:
142
internal:对友元程序集和内部可见.我们可以利用这一点,使我们开发的类库更加地安全.比如,你不喜欢你开发的ClassLib(DLL),被其他公司或团队使用,就可以在使用internal,当然还要加上友元程序集的相关知识.上代码:TestFrendsAbb类库ToolsBytesusingSystem;
usingSystem.Collection..
当一个类包含一个友元声明时,类与友元各自是否是模板是相互无关的。如果一个类模板包含一个非模板友元,则友元被授权可以访问所有模板实例。如果友元自身是模板,类可以授权给所有友元模板实例,也可以只授权给特定实例。 1. 一对一友好关系 类模板与另一个(类或函数)模板间友好关系的最常见形式是建立对应实例及其 ...
分类:
编程语言 时间:
2016-08-03 13:26:23
阅读次数:
206