14.1 重载操作符的定义不能重载的操作符:. ?: sizeof :: .*不能为任何内置类型定义额外的新的操作符;优先级和结合性是固定的;不再具备短路求值特性(不建议重载&&、||、逗号);一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员;使用重载操作符的方式:1) 与内置类型使...
分类:
编程语言 时间:
2015-10-25 06:07:58
阅读次数:
346
看看下面这个例子: 1 template 2 class Rational{ 3 public: 4 Rational(const T & numerator, const T & denominator); 5 const T numerator()const; 6 con...
分类:
其他好文 时间:
2015-10-18 18:35:29
阅读次数:
198
条款46请输入转换的时候,需要定义非模板成员函数条款47请使用traits class表现类型信息条款46:须要类型转换时请为模板定义非成员函数条款 24提到过为什么non-member函数才有能力“在全部实參身上实施隐式类型转换”。本条款接着那个Rational样例来讲。把Rati...
分类:
编程语言 时间:
2015-09-26 14:35:35
阅读次数:
267
NOTE: 1.virtual 函数的替代方案包括NVI手法及Strategy设计模式的多种形式。NVI手法自身是一个特殊形式的Template Method设计模式。 2.将机能从成员函数移到外部函数,带来的一个缺点是,非成员函数无法访问class的non-public成员。 ...
分类:
其他好文 时间:
2015-09-19 21:12:37
阅读次数:
189
1. 条款24举出一个Rational的例子,来说明为什么只有non-member函数才有能力"在所有实参身上实施隐式类型转换".Rational的定义如下:class Rational{public: Rational(int numerator=0,int denominator=1); ...
分类:
编程语言 时间:
2015-09-12 06:17:18
阅读次数:
210
1 为什么要用友元函数结合着类的特性和类中一般成员函数,我们可以这样理解:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别...
分类:
其他好文 时间:
2015-08-29 20:02:31
阅读次数:
147
3.运算符重载的形式:运算符函数重载一般有两种形式:重载为类的成员函数和重载为类的非成员函数。非成员函数通常是友元。(可以把一个运算符作为一个非成员、非友元函数重载。但是,这样的运算符函数访问类的私有和保护成员时,必须使用类的公有接口中提供的设置数据和读取数据的函数,调用这些函数时会降低性能。可以内...
分类:
其他好文 时间:
2015-08-06 01:48:50
阅读次数:
90
多态:允许将子类类型的指针赋值给父类类型的指针。赋值以后,父类对象可以根据当前赋值给它的子类对象的特性以不同的方式运作。深拷贝:重新分配内存;浅拷贝:共用同一内存。友元:非成员函数不能通过类的对象访问私有成员,但是友元(函数)可以;友元函数却不是成员函数,但必须在类中声明;类与类之间的友元关系不能被...
分类:
编程语言 时间:
2015-07-15 16:38:34
阅读次数:
126
1 基本概念
1.2 重载的运算符函数的调用方式
1) 非成员函数的调用 operator+为对象data1, data2的非成员函数
data1 + data2; ==> operator+(data1 , data2);
2) 成员函数的调用
operator+为对象data1的成员函数
data1 + data2 ==> d...
分类:
编程语言 时间:
2015-07-02 22:37:19
阅读次数:
207
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie经验:当我们编写一个 class template, 而它所提供之"与此 template 相关的"函数支持"全部參数之隐式类型转换"时。请将那些函数定义为 "class template内部的...
分类:
编程语言 时间:
2015-06-28 20:00:00
阅读次数:
173