如果是成员函数的话,左侧的运算对象将会是我们的类的一个对象 sale_data data; data<<cout; cout << data 这种情况是cout在调用operator<<;而不是data在调用operator<< ;如果你要把operator<<设为成员函数就只能用 data << ...
分类:
其他好文 时间:
2017-01-07 16:55:41
阅读次数:
187
移动语义 完成所有权的移交,当拷贝构造和赋值构造时,目标对象的所有权必须移交给我们的新的对象,原始对象将丧失所有权,_p指针将不再指向原来的那个数组; 左值与右值 C原始定义 左值:可以出现在赋值号的左边或者右边 右值:只能出现在赋值号的右边 C++的定义 左值:用于标识非临时对象或者非成员函数的表 ...
分类:
编程语言 时间:
2016-12-25 23:02:46
阅读次数:
273
函数模板技术定义了参数化的非成员函数,这时的程序能够不同的参数类型调用相同的代码类模板:管理其他数据类型的通用数据类型容器:容器区别使用范例泛型编程:独立于任何特定类型实现的方式编写代码。需要用户提供具体程序实例所操作的类型或值。继承和多态有什么区别1、什么..
分类:
其他好文 时间:
2016-12-08 00:04:30
阅读次数:
154
友元函数 格式:friend 类型 函数名(形式参数); 关键字friend 友元函数是可以直接访问类的私有成员的非成员函数 友元的作用虽减少时间开销,但它破坏了类的封装性和隐藏性 友元类 格式:friend class 类名; 关键字friend class 友元关系不能被继承,友元关系是单向的, ...
分类:
编程语言 时间:
2016-11-30 03:48:16
阅读次数:
220
条款23:宁以non-member、non-friend替换member函数 即 以非成员函数 非友元函数 替换成员函数。 直观上,面向对象应该尽可能的封装,封装数据、封装操作等等,所以这个条款可能有悖常理。 比如一个类成员函数CObj::Func(){ Dosomething(); } 该函数会调 ...
分类:
其他好文 时间:
2016-10-09 23:09:55
阅读次数:
175
哪些函数不能被继承: 构造函数、析构函数、拷贝构造函数、赋值操作符重载函数(赋值构造函数) 哪些函数不能为虚函数:(定义虚函数一般是为了使用多态性质) 普通函数(非成员函数):不属于类的成员,不能用于多态,只能被重载。 静态成员函数:静态成员函数属于类的信息,被所有对象共享,不归某个对象所有,没有动 ...
分类:
其他好文 时间:
2016-09-07 22:36:38
阅读次数:
193
条款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
第四章: function语意学 非静态成员函数: 名称的特殊处理: 静态成员函数由于缺乏this指针,因此差不多等于非成员函数: virtual table布局(单一继承): 单一继承下函数调用: 虚拟继承virtual table布局: 指向成员函数的指针: 虚成员函数的地址在编译时期是未知的: ...
分类:
编程语言 时间:
2016-07-21 19:27:46
阅读次数:
157
函数与函数子
在STL的使用中,我们经常需要自定义比较函数。本文将介绍如何完成这一类的函数,并且给出可靠而高效的使用建议。
1. mem_fun, ptr_fun, mem_fun_ref
mem_fun, ptr_fun, mem_fun_ref主要的任务是为了掩盖C++语言中一个内在的语法不一致的问题。
调用一个函数,C++提供了三种方法。f(x); // 语法1:非成员函数的调用。...
分类:
编程语言 时间:
2016-07-19 10:10:20
阅读次数:
275