社区
C++ 语言
帖子详情
关于构造函数初始化列表:为什么引用类型必须使用初始化列表了?
Louistao
2011-07-13 11:36:30
rt:为什么引用类型必须使用初始化列表
...全文
312
7
打赏
收藏
关于构造函数初始化列表:为什么引用类型必须使用初始化列表了?
rt:为什么引用类型必须使用初始化列表
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hedy007
2011-07-13
打赏
举报
回复
const 和 引用都属于那种必须在声明时马上初始化的。
如果放到构造函数体中,实际是在赋值。
至善者善之敌
2011-07-13
打赏
举报
回复
因为引用只能被初始化一次,如果是在构造函数中赋值的话,显然前边那句话就矛盾了
Ace丶双鱼
2011-07-13
打赏
举报
回复
C++基本语法,建议LZ先看看C++ primer
ouyh12345
2011-07-13
打赏
举报
回复
引用类型当然不能赋值,只能初始化
pengzhixi
2011-07-13
打赏
举报
回复
是的,引用从定义就必须有明确的初始化。
Louistao
2011-07-13
打赏
举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
文摘
4. 必须使用初始化列表的情形:因为不能直接在类定义中直接初始化变量,而 const 类型的变量和引用类型的变量又必 须在声明时进行初始化,const 类型的变量只能初始化不能进行赋值,比如 hyong 类中定义了 const int a 变量,而在 hyong::hyong(){a=1;}这时就会发生错误,const 变量不能赋值,只能初始化。这时就发生了毛盾,解决的方法就是使 用……
[/Quote]
引用类型也不能赋值?
bdmh
2011-07-13
打赏
举报
回复
文摘
4. 必须使用初始化列表的情形:因为不能直接在类定义中直接初始化变量,而 const 类型的变量和引用类型的变量又必 须在声明时进行初始化,const 类型的变量只能初始化不能进行赋值,比如 hyong 类中定义了 const int a 变量,而在 hyong::hyong(){a=1;}这时就会发生错误,const 变量不能赋值,只能初始化。这时就发生了毛盾,解决的方法就是使 用初始化列表,即 const 类型的变量和引用类型的变量必须在初始化列表中初始化,比如初始化 hyong 类中的 const 变量 a 时就应这样写 hyong::hyong():a(1){}就是正确的表达式。
构造函数
初始化
列表
一.
构造函数
初始化
列表
的基本形式
构造函数
初始化
列表
以一个冒号开始,接着是以逗号分隔的数据成员
列表
, 每个数据成员后面跟一个放在括号中的
初始化
式。 student(int m,int n):shengao(m),tizhong(n) { cout<<"
初始化
"<<endl; } 代码举例: #include<iostream> using namespace std; class student { private: do...
c++
必须
使用
构造函数
初始化
列表
初始化
的情况
类对象的构造顺序是这样的: 1.分配内存,调用
构造函数
时,隐式/显示的
初始化
各数据成员; 2.进入
构造函数
后在
构造函数
中执行一般赋值与计算。
使用
初始化
列表
有两个原因: 原因1.
必须
这样做: 《C++ Primer》中提到在以下三种情况下需要
使用
初始化
成员
列表
: 情况一、需要
初始化
的数据成员是对象...
构造函数
的
初始化
列表
已经有个
构造函数
负责
初始化
,为什么还需要
构造函数
初始化
表呢? 在以下三种情况下需要
使用
初始化
成员
列表
: 需要
初始化
的数据成员是对象的情况; 需要
初始化
const修饰的类成员; 需要
初始化
引用成员数据;
引用类型
的成员变量
必须
在
构造函数
的
初始化
列表
中进行
初始化
。对于类成员是const修饰,或是
引用类型
的情况,是不允许赋值操作的,(显然嘛,const就是防止被错误赋值的,
引用类型
必须
定义赋值在......
c++成员变量
初始化
方法:声明时
初始化
、
初始化
列表
、
构造函数
初始化
c++成员变量
初始化
方法:声明时
初始化
、
初始化
列表
、
构造函数
初始化
有人说在声明的时候
初始化
相当于在
构造函数
中
初始化
,其实不是的,成员变量
初始化
的顺序为:先进行声明时
初始化
,然后进行
初始化
列表
初始化
,最后进行
构造函数
初始化
,如下代码:(另外
初始化
列表
中
初始化
的顺序是和变量声明的顺序一样,而与
列表
中的顺序无关) 1 #include "stdafx.h" 2 #include <iostre...
构造函数
初始化
列表
和
构造函数
的区别
构造函数
初始化
列表
是显式的
初始化
类的成员;而没
使用
初始化
列表
的
构造函数
是对类的成员赋值,
初始化
和赋值对内置类型的成员没有什么大的区别,对非内置类型成员变量,为了避免两次构造,推荐
使用
类
构造函数
初始化
列表
。但有的时候
必须
用带有
初始化
列表
的
构造函数
:1.成员类型是没有默认
构造函数
的类。若没有提供显示
初始化
式,则编译器隐式
使用
成员类型的默认
构造函数
,若类没有默认
构造函数
,则编译器尝试
使用
默认
构造函数
将会...
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章