1、const member function(常量成员函数)
在类内 如果不改变数据 就写为常量成员函数
FUNCTION1()const {}
为什么要使用常量成员函数呢
for example
template<typename T>
class test
{
public:
test(double r=0,double i=0):re(r),im(i){}
double real()const {return re;}
double imag()const {return im;}
private:
T re,im;
}
{
const test c1(2,1);
cout<<c1.real();
cout<<c2.imag();
}
面对上述情况时 如果在类内函数real 和imag不声明为常量成员函数时 编译器会报错 也就是下述错误示例`
template<typename T>
class test
{
public:
test(double r=0,double i=0):re(r),im(i){}
double real() {return re;}
double imag() {return im;}
private:
T re,im;
}
{
const test c1(2,1);
cout<<c1.real();
cout<<c2.imag();
}
2、参数传递pass by value vs pass by reference(to const)
如果是pass by value 则是传递字节 在字节数较多的时候 比较浪费时间
如果是pass by reference 则是引用,底层就是指针 传递参数。 速度很快
在实际编程中尽量使用引用进行参数传递 而不要使用值传递
如果不希望改变参数的值 写为 const test&
如果会对传入的参数改变 则写为 test&
3、返回值传递return by value vs return by reference (to const)
引用形式 test& 函数名
值返回形式 函数类型 函数名
4、friend(友元)
(1)自由取得friend的private成员 friend可以直接拿private的值 如果不是friend则需要其他函数作为中间媒介 间接拿取,会导致效率比较低。
(2)相同类的各个对象互为friend友元
5、数据(data)的获取等级 最好设置为 private
6、什么时候可以不可以用引用
函数内部 声明了一个新对象 在结束时自动释放