• 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.构造函数的特殊语法

  • 相关阅读:
    使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/sky-z/p/9502318.html
Copyright © 2020-2023  润新知