P3 构造函数
观察的点 : 数据在private
有没有 const
传递是否时 reference
临时变量不能返回引用
class complex
{
public:
complex(double r = 0, double i = 0) (1)
: re(r), im(i)
{}
// inline funtion 特性比好
double real() const { return re; } //若函数在类内定义完成 自动成为inline 候选人
double imag() const { return im; }
private:
double re, im;
};
初始化 阶段 设置初值
double r = 0, double i = 0 默认参数
complex(double r = 0, double i = 0)
: re® , im(i)
{}
赋值 效率比较差
complex(double r = 0, double i = 0)
{
re = r;
im = i;
}
complex() : re(0), im(0) {} // ?
这样的不带参数 重载不可以 因为已经有了 (1) 这个 构造函数 且有默认值
原则 构造函数可以重载 但是不能有歧义
const 关键字 不改变数据 数据可读不可写
eg : 建一个 常量对象
如果 double real() const { return re; } 中const 不存在 则 无法运行成功
const complex c2(2, 1);
cout<<c2.real();
cout<<c2.imag();
值传递和 引用
1 类对象作为函数形参,标准传递方式是 reference 避免拷贝类对象花费不必要的开销
2 函数返回值是一个内置类型,或者临时对象时则需要按值传递 pass_by_value
return value vs reference
相同 class obj 互为友元函数
针对 int fun 函数 为什么可以直接调用 (简单理解为 一个妈生的 相互拿钱)
操作符重载与临时对象
所有的成员带着一个 隐藏函数 this 谁调用 谁就是this
链式编程 返回引用
传进去的是指针 ,返回的是指针所指向的内容 即 objcet. 接收的是一个引用ref, 没有关系 ,如果是void 则不能继续进行± ;