C中复合类的初始化顺序有派生类,有基类,有基类成员,有基类静态类成员

车建设 2019-12-21 23:29:00

推荐回答

构造代码块的作用同样是给对象进行初始化。对象一建立就运行构造代码块了,而且优先于构造函数执行。这里要强调一下,有对象建立,才会运行构造代码块,类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。扩展资料1)使用new操作符创建对象。如果含有静态成员变量:静态成员变量的静态代码块->静态成员变量的代码块->静态成员变量的构造方法)->静态代码块->代码块->构造函数2)如果不含静态成员变量:静态代码块->->代码块->构造函数。静态代码块只执行一次,而每次创建对象都会调用共同的构造代码块,而构造函数也只在创建对象时执行该对象的构造函数。构造函数。
齐新春2019-12-22 00:21:19

提示您:回答为网友贡献,仅供参考。

其他回答

  • 直接访问静态变量肯定不行,但可以变通一下,通过虚函数获得这个静态变量给你个例子,这样是不是满足你的要求?但这样的话,每个继承类都要做2件事1.定义静态变量2.重写虚函数,返回自己的静态变量这2件事可以通过宏来做。MFC好象就是这么干的#includeclassA{public:conststaticintValue=1;virtualintgetValueconst{returnValue;}};classB:publicA{public:conststaticintValue=2;virtualintgetValueconst{returnB::Value;}};intmain{A*p=newA;A*q=newB;printf"p->value=%d",p->getValue;printf"q->value=%d",q->getValue;getchar;。
    赵颖芳2019-12-22 00:37:55
  • NO!基类指针告诉编译器它的静态类型是基类这种类型,所以限定了这个指针只能调用基类的自有成员。这个其实无关于他指向什么类型对象。但是,你作为这个指针的写作者,你当然知道这个基类指针指向的是派生类对象。所以,可以将这个基类指针强制转换为派生类指针就是强制编译器把这个指针静态类型看作派生类型,静态类型表明了一个对象能执行的所有动作成员函数+它的自有属性数据成员,这样派生类的新增成员就可以被这个指针调用了动态绑定的重写基类的virtual方法并不是派生类新增成员,而是重写override。
    赵飞超2019-12-22 00:09:57
  • 先基类成员,再本类成员。本类成员是按照声明的顺序来的。
    黄生鹏2019-12-22 00:00:19
  • 如果是初始化当然是调用基类的构造函数了,所以在创建派生类对象,引用或者指针的时候,就能调用到基类的构造函数来初始化基类成员。
    龚巧丽2019-12-21 23:41:14

相关问答

1类:有工作绝缘,有接地端点和接地线,规定必须接地或接零。接地线必须使用外表为黄绿色双色的铜芯导线,接触电阻应不大0.1欧姆,如电冰箱等。2类:这类电器采用双重绝缘或加强绝缘,没有接地要求。有工作绝缘外,尚有独立的保护绝缘或有效的电器隔离。这类电器的安全程度高,可用于与人体皮肤相接触的器具,如电热毯等。0类:这类电器只要求带电部分与外壳隔离,没有接地要求。这类电器主要用于人们接触不到的地方,如荧光灯的整流器等。01类:这类电器有工业绝缘,有接地端点可以接地或不接地使用,在干燥环境的各种电器,如剃须刀、电热毯等电器。在不能安全接地又不干燥的环境中,必须使用安全电压型的产品。扩展资料用途分类1、控制电器:用于各种控制电路和控制系统的电器,例如接触器、继电器、电动机起动器等。2、主令电器:用于自动控制系统中发送动作指令的电器,例如按钮、行程开关、万能转换开关等。3、保护电器:用于保护电路及用电设备的电器,如熔断器、热继电器、各种保护继电器、避雷器等。4、执行电器:指用于完成某种动作或传动功能的电器,如电磁铁、电磁离合器等。5、配电电器:用于电能的输送和分配的电器,例如高压断路器、隔离开关、刀开关、自动空气开关等。二类电器——电器。