1. Conversion function转换函数
一共分为两类:一种是转化为其他类型,另一种是其它类型转化为类中的类型。
比如:
Operator double()const { returnm_num/m_den; }
其中,m_num和m_den在类中为int型。
2. Non-explicit-one-argument
例如:
Fraction operator+(const Fraction&
f){return Fraction(……);}
使用时:Fraction f(3,5) ;Fraction d2 = f+1;
3. Conversion function & Non-explicit-one-argument
若两个转换同时出现在类内,或导致执行的混乱,要慎重使用。
4. Pointer-like-classes
一般有operator*和operator->两种操作符
5. Variadic template数目不定的模板参数
例如:
Void print(){};
Temoplate
Void print(const T& firstArg , const Types&…args)
{
Cout<<firstArg<<endl;
Print(args…);
}
解析:typename…中的省略号,表示有很多个type,这由使用者决定。当第一个参数 firstArg打印时,要把剩下的args…一起传给print。到下一个print时, 系统会自动将 args…中的第一个拿出来作为firstArg。如此循环,知道当args…中没有参数,这是 会调用void print() {},有点像递归。
6. Reference & pointer
Reference与pointer有相同的功能,当时仍有差别。
例如:
Int x = 0 ;
Int r& = x;
Int* p = &x;
此时,r = x ,*p = x。而且在定义r的同时必赋值,而p则可以不用。
加上以下的语句:
Int x2 = 5;
r = x2 ;
Int& r2 = r;
此时,r 、r2、x都为5,说明可以通过改变引用来改变x的值,而不能通过改变p来改变x的 值。
mso-a�Wk�$�