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

相关推荐
JAVA学习通2 小时前
北京明光云振铎数据科技Java面经
java·开发语言·科技
jerryinwuhan8 小时前
基于各城市站点流量的复合功能比较
开发语言·php
迈巴赫车主8 小时前
Java基础:list、set、map一遍过
java·开发语言
智者知已应修善业9 小时前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
南 阳10 小时前
Python从入门到精通day66
开发语言·python
十八旬11 小时前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude
前进的李工11 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
Byron Loong12 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
独隅12 小时前
CodeX + Visual Studio Code 联动的全面指南
开发语言·php
坚果派·白晓明12 小时前
【鸿蒙PC三方库移植适配框架解读系列】第一篇:Lycium C/C++ 三方库适配 — 概述与环境配置
c语言·开发语言·c++·harmonyos·开源鸿蒙·三方库·c/c++三方库