首页 > 代码库 > inline&friend&操作符重载

inline&friend&操作符重载

(1).inline:是一种以空间换时间的做法省去调用函数的额外开销,提高程序的运行效率,它对于编译器而言只是一种建议
(2).友元函数:是可以直接访问类的private成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明
     友元类:友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类的非公有成员
     友元优点:提高程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销)
     友元缺点:破坏了类的封装性和隐藏性使得非成员函数可以访问类的private成员
(3).操作运算符重载:
     规则:
     (1).不可以被重载的操作运算符 "."(类属关系运算符)、".*"(成员指针运算符)、"::"(作用域运算符)、"?:"(三目运算符)、sizeof运算符
     ***除了赋值号(=)外,基类中重载的运算符都将被派生类继承
     (2).只能重载C++中已有的运算符,不能创建新的运算符
     (3).运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的原则
     (4).重载之后的运算符不能改变呢运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构
class Complex
{
    Complex(const double _dReal,const double _dImage);
    Complex(const Complex& complex);
    ~Complex();
    Complex & operator=(const Complex& complex);
    Complex operator+(const Complex complex);
    Complex operator-(const Complex complex);
    Complex operator*(const Complex complex);
    Complex operator/(const Complex complex);
    Complex operator+=(const Complex complex);
    Complex operator-=(const Complex complex);
    Complex operator*=(const Complex complex);
    Complex operator/=(const Complex complex);
    bool operator<(const Complex complex);
    bool operator<=(const Complex complex);
    bool operator>(const Complex complex);
    bool operator>=(const Complex complex);
    bool operator==(const Complex complex);
    bool operator!=(const Complex complex);
private:
    double _dReal;
    double _dImage;
};

 

inline&friend&操作符重载