博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
声明顺序
阅读量:6273 次
发布时间:2019-06-22

本文共 925 字,大约阅读时间需要 3 分钟。

#include 
using namespace std;class Point2D{public: Point2D(int val) :y(val),x(y) { }private: int x; int y; public: void show() { cout << x << " " << y << endl; }}; // class Point2Dint main(){ Point2D point(2); point.show(); return 0;}

-----------------------------分割线------------------------ 

point.x和point.y的值分别是什么? 

结果如下:

结果中,y正常赋值了,x却没有,这是为什么呢?

其实,有规定这样初始化的时候是按照成员变量申明的顺序来的,先申明的x,所以先初始化x(y),这个时候y还没有初始化,结果就是一个未知数;然后才开始初始化y,为val。

改下下面的代码就正确了:

#include 
using namespace std;class Point2D{public: Point2D(int val) :y(x),x(val) { }private: int x; int y; public: void show() { cout << x << " " << y << endl; }}; // class Point2Dint main(){ Point2D point(2); point.show(); return 0;}
此时,输出结果为:

初始化顺序仅与声明顺序相关,与构造函数中的位置无关。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wangicter/archive/2012/04/26/4767356.html

你可能感兴趣的文章
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
关于FreeBSD的CVSROOT的配置
查看>>
基于RBAC权限管理
查看>>
基于Internet的软件工程策略
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>