注册 登录
编程论坛 C++教室

const int& d = int()这句在程序里怎样理解?

Lyone 发布于 2010-12-10 10:44, 2231 次点击
一个结构体如下:
struct a
{
int data_int;
a(const int& d = int()):data_int(d){}
};

1.int()是什么意思?分配一个int型的地址空间么?
2.const int& d怎么理解? 这样写与直接写成 int d有什么区别呢?
8 回复
#2
laoyang1032010-12-10 11:00
const int& d怎么理解? 这样写与直接写成 int d有什么区别呢?
const int& d  是一个整形数据的常引用  (应该在初始化的时候赋值)
int d;是定义了一个整形变量
第一个问题我还真没见过
#3
lintaoyn2010-12-10 11:03
可以把C++的内建数据类型也看成类。
int()就是调用int的默认构造函数,产生临时整数0。int(3)就是产生一个3。
const int& d 这个d没有自己专属的内存空间(他使用为int()分配的那块地址),而int d则有自己的内存空间。(你现在这么理解就可以了)
#4
Lyone2010-12-10 13:44
那const int& d这样写是不是就以为节省了内存空间。给程序瘦身呢?
#5
lintaoyn2010-12-10 16:03
我表达能力不行,你自己看书里关于引用的内容,看几遍你就懂了。
#6
最近不在2010-12-10 21:14
const int& n一是为了防止n被修改,二是节省内存. 如果写成int n,传参时是要多分配4字节的,而且n是可以修改的
#7
pangding2010-12-10 21:43
我觉得一个 int 就的话说什么省内存呀,提高速度什么的都不实际。

但这属于 C++ 的一个逻辑习惯。传的参数如果不需要改动,普遍都用 const 的引用。
就是说是约定俗成的东西,大家都这么写,有各种好处,妙不可言。久而久之,就会有所体会了。


至于那个 int(),就是 3楼说的。
#8
尝鲜2010-12-10 22:00
a(const int& d = int()):data_int(d){}
int()是初始化int 类型的
a(const int& d = int()):data_int(d){}
相当于
 a(const int& d=0):data_int(d){}
#9
kittel2010-12-11 18:22
回复 7楼 pangding
学习了
1