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。注意,与构造函数相比,构造函数的初始化顺序是先定义的先初始化

相关推荐
YSF2017_31 小时前
C语言16-makefile(3)——makefile的模式规则
linux·c语言·开发语言
herinspace2 小时前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
ILYT NCTR3 小时前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
小雅痞3 小时前
[Java][Leetcode simple] 28. 找出字符串中第一个匹配项的下标
java·开发语言·leetcode
likerhood3 小时前
java中的不可变类(Immutable)
java·开发语言
Ulyanov3 小时前
《PySide6 GUI开发指南:QML核心与实践》 第一篇:GUI新纪元——QML与PySide6生态系统全景
开发语言·python·qt·qml·雷达电子对抗
Rust研习社3 小时前
从入门到实践:Rust 异步编程完全指南
开发语言·后端·rust
yaoxin5211233 小时前
389. Java IO API - 获取文件名
java·开发语言·python
小苗卷不动4 小时前
OJ练习之疯狂的自我检索者(简单)
c++