引用真的是别名吗?
来源:互联网 发布:上海网络广播 编辑:程序博客网 时间:2024/04/27 18:35
中秋刚过,深圳依旧热气袭人。今年比较忙,一直没更新文章,今年5月份,我开始学习c++了。下面来瞧瞧c++的引用类型。
c++源自于c语言,引用是c++的引入的新类型。首先我们要学好如何使用引用类型变量。
1.引用变量的初始化分两类。如果是局部变量或全局变量,定义时需要初始化。如果是作为函数参数或是成员变量,则通过调用函数或构造函数来绑定。
2.引用变量初始化后,在运行时就不能绑定到别的对象了。
3.引用所绑定的对象不能是匿名的,如int& r = 3*4是不允许的。
4.没有引用的引用,也没有指向引用的指针。
看到了c++的引用部分,网上看了看,很多人认为觉得引用就是所绑定的变量的别名。当然,也有文章指出,是常量指针。
看看如下代码:
int a = 3;
int &b = a;
b = 5;
cout << a << endl;
对b初始化后,操作b就和操作a一样,于是乎,想当然地认为是别名了。但仔细分析下,你会惊讶地发现,本质上不是别名。
目前编译器一般是通过指针来实现引用的,因此,引用类型占用了内存空间。
如:
class A{
int& i;
int& j;
};
在x86下sizeof(A)是8。既然占用空间,那明显就不是别名了。如果你还认为是别名,那不是说大多数编译器都实现错了吗?而实际上,引用是新的类型(通过重载可以看出来),同时标准也没有规定它是否占用了内存。因此不允许有指向引用的内存。
总的来说,引用是c++中的一个语法糖。只是它给程序员带来的坑要远远多于它所带来的甜头。
转载请注明出处:http://blog.csdn.net/booirror
- 引用真的是别名吗?
- 引用--变量的别名
- 是真的吗?
- 是真的吗?
- 是真的吗
- 关于DNS的别名,你真的理解了吗?
- 引用(变量的别名)
- 真的是她吗?
- 这次是 真的吗?
- 真的是NoClassDefFoundError吗
- 预言是真的吗?
- 2012是真的吗?
- 真的是这样吗?
- C++必知必会之(5)引用是别名而非指针
- 引用、变量的别名,并非指针
- sql里面如何引用列的别名
- 网络指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名;可重入函数
- 指针和引用对比 理解引用起到别名的作用
- javascript读取cookie的办法之一
- linux下关闭触摸板
- Sub-process /usr/bin/dpkg returned an error code (1)
- Caching SSRS Reports
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 引用真的是别名吗?
- C#中Coroutine的深层研究
- java文件输出到.txt文件中实现换行
- cpu arch之avr
- java之运算符
- cpu arch之8051核
- iOS 搭建 XMPP实现环境
- cpu arch之msp pic
- MySQL 递归查询 当前节点及子节点