c++单目运算符重载

img

img


请问画红横线的是什么作用,还有为什么可以使用Complex(float x=0,float y=0) :_x(x),_y(y) 为什么可以这样使用加粗的内容。初学者望解答。

横线处是构造函数,初始化类变量时会被调用。
加粗的内容是属于初始化列表的语法。_x(x)的小括号里面的x代码你传入的参数,_x就是类的成员变量了。就是把你传入参数的值赋值给对应的成员变量。
而float x=0,float y=0就是指初始化默认值,你如果不传值就执行这个值。
你看我的代码,初始化了两个类变量,a我没传值,x、y就都是0,b我给了两个参数,那么x、y就是我传入的参数的值。


#include <iostream>

class Complex {
public:
    Complex(int x = 0, int y = 0) : x(x), y(y) {}
    ~Complex() {}
    void PrintData() {
        std::cout << "x = " << this->x << std::endl
                  << "y = " << this->y << std::endl;
    }

private:
    int x;
    int y;
};

int main(void) {
    Complex a;
    a.PrintData();
    Complex b{5, 6};
    b.PrintData();
}