zoukankan      html  css  js  c++  java
  • 2019.1.14专业课笔记

    构造函数的工作是在创建对象时自动执行

    构造函数

    C++ 初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。

    class CMyClass {
        CMyClass(int x, int y);
        int m_x;
        int m_y;
    };
    
    CMyClass::CMyClass(int x, int y) : m_y(y), m_x(m_y)
    {
    };

    你可能以为上面的代码将会首先做 m_y=I,然后做 m_x=m_y,最后它们有相同的值。但是编译器先初始化 m_x,然后是 m_y,,因为它们是按这样的顺序声明的。结果是 m_x 将有一个不可预测的值。有两种方法避免它,一个是总是按照你希望它们被初始化的顺序声明成员,第二个是,如果你决定使用初始化列表,总是按照它们声明的顺序罗列这些成员。这将有助于消除混淆。

    C++构造函数调用顺序
      1、创建派生类的对象,基类的构造函数函数优先被调用(也优先于派生类里的成员类);
      2、如果类里面有成员类,成员类的构造函数优先被调用;
      3、基类构造函数如果有多个基类则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序;
      4、成员类对象构造函数如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序;
      5、派生类构造函数
      作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递给适当的基类构造函数否则两个类的实现变成紧耦合的(tightly coupled)将更加难于正确地修改或扩展基类的实现。(基类设计者的责任是提供一组适当的基类构造函数)。

    https://www.cnblogs.com/koocookie/p/6664114.html

     https://www.cnblogs.com/xiaoxue126/p/9015541.html

     http://www.runoob.com/w3cnote/cpp-constructor-method-of-the-parent-class.html

    采用多文件编程的方法编写程序,程序里需要包含一个函数,这个函数可以从键盘得到一个整数并把它作为返回值传递给调用函数。

     https://www.liuchuo.net/archives/1004

     https://blog.csdn.net/sinat_31655507/article/details/50646536

    http://www.runoob.com/cplusplus/cpp-copy-constructor.html

    沙耶加是最棒的也是最强的,今天换我来拯救世界!
  • 相关阅读:
    线上崩溃... MediaPlayerNative: error (1, -2147483648)
    Android Notification cancel和cancelAll方法无效问题
    Android ButterKnife 找不到符号
    Android日历组件
    Android dimen适配
    Android View的invalidate()原理
    Android Camera坐标系三维图及正向绕行方向
    Android 自定义多选的 Spinner
    Android中PorterDuff.Mode【转】
    java面向对象的注意点2
  • 原文地址:https://www.cnblogs.com/wanghui626/p/10266482.html
Copyright © 2011-2022 走看看