C++选择题练习(一)

下⾯程序的运⾏结果是什么(D)

A.输出1 1

B.输出2 2

C.编译报错

D.输出1 随机值

E.输出1 2

F.输出 2 1

#include<iostream>

using namespace std;

class A

{

public:

A(int a)

:_a1(a)

, _a2(_a1)

{}

void Print()

{

cout <<_a1 <<" " <<_a2<< endl;

}

private:

int _a2 = 2; //声明

int _a1 = 2;

};

int main()

{

A aa(1);

aa.Print();

}
分析:首先拿1调用构造函数A(int a)直接初始化aa,初始化aa时,由于是初始化列表,初始化顺序是看声明顺序,先声明的先初始化, _a2先被声明,那么先初始化_a2,拿此时aa对象中还未被初始化的_a1随机值去初始化_a2,接着拿a的值1去初始化_a1。注意,与构造函数相比,构造函数的初始化顺序是先定义的先初始化

相关推荐
zlinear数据采集卡1 分钟前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai15 分钟前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间22 分钟前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
小努蛋1 小时前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty
qz_Serene1 小时前
C++:类和对象(上)
开发语言·c++
西安景驰电子2 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
ctlover2 小时前
Python文件操作
开发语言·python
luj_17682 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
霸道流氓气质2 小时前
基于本地 PaddleOCR 的 PDF 文字识别完整技术文档
开发语言·r语言·pdf
wuyk5552 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表