成员以其在类中声明的顺序构造

简介: 分析以下代码的输出: #include using namespace std; class A { public: A(int j):age(j) , num(age + 1) { cout

 

分析以下代码的输出:

#include<iostream>
using namespace std;

class A
{
public:
	A(int j):age(j) , num(age + 1)
	{
		cout<<"age:"<<age<<",num:"<<num<<endl;
	}
protected:
	int num;
	int age;
};

void main()
{
	A sa(15);
}

 运行结果:age:15 , num:2(num为一个随机数)

由于按成员在类定义中的声明顺序进行构造,而不是按构造函数说明中冒号后面的顺序,所以num成员被赋得是一个随机值,并不是想赋的16,因为这个时候,成员age还没有被赋值,age的内存空间中是一个随机值。

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
2月前
|
C++
C++程序中的类声明与对象定义
C++程序中的类声明与对象定义
34 1
|
8月前
|
C++
45 C++ - 继承中同名成员的处理方法
45 C++ - 继承中同名成员的处理方法
35 0
|
2月前
|
编译器 程序员 数据安全/隐私保护
C++类成员解析:编译器如何识别和处理声明与定义(C++ 类的作用域以及查找顺序)
C++类成员解析:编译器如何识别和处理声明与定义(C++ 类的作用域以及查找顺序)
26 0
|
2月前
|
C++
26类的声明和对象的定义
26类的声明和对象的定义
20 0
|
编译器 C++
C++类对象构造顺序
C++类对象构造顺序
47 0
C++类对象构造顺序
类初始列表和类对象作为类成员
类初始列表和类对象作为类成员
类初始列表和类对象作为类成员
C#(十六)之C#类中的成员属性 构造函数 析构函数
本篇内容记录了成员属性、构造函数、析构函数的一些基本用法。
276 0
C#(十六)之C#类中的成员属性 构造函数 析构函数