C++网易云课堂开发工程师-参数传递与返回值

构造函数放在private里面,这节视频就这样出现啦!

1.将构造函数放在private里面表示构造函数不可以被外界调用。

complex c1(2, 1);

complex c2;

上面这两个动作,不可以运行,因为构造函数放在了private里面,不允许外界私自调用

-----------------------------------------------被用到的过程(Singleton)------------------------------------------

class A{

   public:

      static A& getInstance();

      setup() {...}

  private:

      A();

      A(const A& rhs);  

};

A& A::getInstance(){                                   调用方式,A::getInstance().setup();

static A a;

return a;

}                                                                    单例模式表示,整个函数不允许被“外界”调用,并且仅有一个副本。

2.常量成员函数

double real() const {return re;}                    此处的const表示不允许改变数据成员内容的,相当于对this指针声明为不可以更改。

示例:1. double  real() {return re;}

            2. const  complex c1(2,1);

            3. c1.real()                                        此处是绝对不允许如此操作的,c1.real()相当于隐含表达this = c1,此时会更改this的不可更改性。         

~~~~~~~~~应当更改为~~~~~~~~~~~~~             

1. double real() const {return re;}             这个部分特别重要!

------------------------------------------实际理解情况为-------------------------------------------

1.所有的成员的函数,在函数的参数列表里面都拥有一个this指针。

2.this指针所指向的对象是调用者对象

3.在默认情况下,this的类型是指向“类类型的非常量”(成员函数目前是可以改变的)的“常量指针”(指针不可改变,仅指向调用类)

Class* const this;

4.按照初始化原则,不能将this赋值为一个常量对象上。

Class* const this; 不能赋值为

 

 

3.参数的传递:pass by value vs. pass by reference(to const)

参数传递尽量传引用,注意需要不可以被改的情况下,尽量用const。(传递应用的速度相当于传递指针的速度。

4.返回值传递:return by value vs. return by reference

返回值传递尽量传引用。

示例: complex& operator += (const complex&);

5.friend友元

friend complex& _doapl (complex*, const complex&);

inline complex&

_doapl (complex* ths, const complex& r){

  ths - > re += r.re;

  ths->im += r.im;

  return *ths;

}

friend 会打开太多的封装,可以利用函数拿数据(但是会稍稍慢一点点)

6.相同class的各个objects互为friends友元

class complex{

  public:

  complex(double r = 0; double i = 0): re (r), im(i){}

  int func(const complex& param){

    return param.re + param.im;

  }

  private:

    double re, im;

}

----------------------------------------------------------------

c2.func(c1);

7.什么时候返回值不允许使用引用

函数的运算结果,放在什么位置。会不会在函数结束生命消失。

标准化书写三点:

1.数据一定在private里面

2.参数尽可能以引用传递

3.返回值尽可能用引用传

4.应当加const的地方必须要加

5.构造函数的特殊语法

posted @ 2018-08-19 19:43  sky-zz  阅读(194)  评论(0编辑  收藏  举报