【笔记】CPP 随笔

1 minute read

瞎几把写写。

Copy ctor & Overload of equal sign

  1. 等于号重载也有返回值,为了支持连等号操作。

    1Fraction& Fraction::operator = (const Fraction &b) {
    2    this -> numerator   = b.numerator;
    3    this -> denominator = b.denominator;
    4    this -> quotient    = b.quotient;
    5    return *this;
    6}
    

    虽然理论上 void 也可行,但不支持连等。

  2. 调用谁的问题

    1Fraction f0(2, 3);
    2Fraction f1(1, 3);
    3Fraction f2 = f1; // Call the COPY CTOR!
    4Fraction f3; f3 = f1; // Call the OVERLOAD PART!
    
  3. 编译器会优化类似于 f4 = f0 + f1 的语句。你会发现等号那里对应的拷贝构造函数并没有被「显式」地调用。