1 转换函数(cnversion function)
把这种类型转换成别的类型
class Fraction{
int m_num;
int m_den;
public:
Fraction(int num, int den=1): m_num(num), m_den(den){ }
operator double() const { return (double)..;}
};
Fraction f(3,5);
double d= 4 + f;
2 non-explicit-one-argument constructor
non-explicit one-argument 只要一个实参就够了。 explicit (明白的) 写在构造函数前面,以构造函数的形式,需要的时候再调用。
class Fraction{
public:
Fraction(int num, int den=1): m_num(num), m_den(den){ }
operator double() const { return (double)..;}
Fraction operator+(const Fraction& f) {return f;}
};
Fraction f(3,5);
Fraction d= 4 + f;
explicit Fraction(int num, int den=1){}
Fraction f(3,5);
Fraction d= 4 + f;
代理模式
pointer-like classes
智能指针
template<class T>
class shared_ptr{
T *px;
public:
T& operator* () const {return *px;}
T* operator->() const {return px;}
shared_ptr(T* p): px(p) {}
};
struct Foo{void method(void) {}}
shared_ptr<Foo> sp(new Foo);
Foo f(*sp);
sp->method();
迭代器
用来遍历容器。
|