笔记3——C++类的一些特性

来源:互联网 发布:上海程序员招聘 编辑:程序博客网 时间:2024/06/05 11:25
/***   主要对类中复制构造函数、操作符重载,内联函数,友元函数进行使用* *   复制构造函数与无参构造函数一样都有系统默认的,但对含动态内存变量需要注意,我们最好自己定义复制构造函数*   复制构造函数主要用于三种情况:参数传递、函数返回、赋值(Person p = x;   Person p(x))    操作符的重载不一定都是类的成员函数,主要取决于和类的关系,若是成员函数二元运算符参数类型是0个或1个参数,非成员函数对二元运算符可以使用两个参数。      inline标注表示此函数是内联函数,若某个函数需要被多次调用,则可以申明为内联函数。     内联函数是程序在编译的时候,直接将源代码复制过来加快程序的执行,但内联函数要求函数里面的代码尽量小,尤其忌讳循环。      friend标注表示此函数是友元函数,友元函数不是成员函数,它与普通函数类似,不能直接访问类的成员变量,但可以访问对象变量,并且可以访问对象中的私有变量,记住友元函数不能被继承。      this是程序中默认的指向类对象的常量指针 ,这里是指Person* const this; *   **/class Person{    public:        int a;        int b;    public:        Person();        Person(int, int);        //复制构造函数        Person(const Person&);        //操作符重载的友元函数        friend Person operator+(Person&, Person&);        friend Person operator-(Person&, Person&);        //操作符重载的成员内联函数        inline Person operator*(Person&);        inline Person operator/(Person&);         inline bool operator==(Person&);        ~Person();};/***无参构造函数 */Person::Person(){} /***有参构造函数 */Person::Person(int a, int b){    this->a = a;    this->b = b;}/***复制构造函数 */Person::Person(const Person& p){    this->a = p.a;    this->b = p.b;}/***操作符重载==*/inline bool Person::operator==(Person& p1){    if(this->a == p1.a && this->b == p1.b){        return true;    }    return false;}/***操作符重载+*/Person operator+(Person& p1, Person& p2){    Person p;    p.a = p1.a+p2.a;    p.b = p1.b+p2.b;    return p;}/***操作符重载-*/Person operator-(Person& p1, Person& p2){    Person p;    p.a = p1.a-p2.a;    p.b = p1.b-p2.b;    return p;}/***操作符重载**/Person Person::operator*(Person& p){    this->a *= p.a;    this->b *= p.b;    return *this;}/***操作符重载/*/Person Person::operator/(Person& p){    this->a /= p.a;    this->b /= p.b;    return *this;}/***析构函数*/Person::~Person(){}
0 0
原创粉丝点击