1.初始化、赋值 使用初始列比使用赋值效率更高。
complex(double r
=0,double i
=0)
:re(r
),im(i
)
{ }
complex(double r
=0,double i
=0)
{ re
=r
;im
=i
; }
不带指针的类,多半不用写析构函数。 一个以上的构造函数,函数名称可能一样,但是只要参数不同,利用重载,编译器会根据参数的类型和参数的个数改变其函数名。 重载构造函数,不能产生二义性。
2. 参数传递与返回值 const对象只能调用const成员函数。 类对象作为函数的形参,标准传递方式是pass_by_reference,可避免拷贝类对象花费不必要的开销。 当函数的返回值是一个内置类型或者函数内临时生成的对象,则需要按值传递pass_by_value。 函数按值传递时,实际上将获得的是实参的副本,并将它压入函数栈,也就是说在函数内修改这个副本,是不影响实参的,但此副本影响指针指向的对象。 pass_by_reference:引用底层是一个指针(常量)。最好都传引用,速度快。 友元函数不是类成员,但友元函数可以访问类的私有数据成员。 相同class的各个objects互为友元。 临时变量不能返回引用。