| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:一个简单的实验
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:2 
一个简单的实验
程序代码:
#include <iostream>
#include <Windows.h>
using namespace std;

 
int main(void)
{
    system("cls");
   
    const int a = 1;
    const int &b = a;
    cout << &a << " VS " << &b << endl;

    const float a1 = 1.0;
    const int &b1 = a1;
    cout << &a1 << " VS " << &b1 << endl;

    int a2 = 1;
    const int &b2 = a2;
    cout << &a2 << " VS " << &b2 << endl;

    int a3 = 1;
    int &b3 = a3;
    cout << &a3 << " VS " << &b3 << endl;

   
    const int a4 = 1.0;
    int &b4 = a4;
    cout << &a4 << " VS " << &b4 << endl;
   
    system("pause");
    return 0;
}

大家先 目测下 这5种方式的引用是不是都成立 如果成立那么输出的结果都是些什么 ?
搜索更多相关主题的帖子: system 
2012-07-28 10:46
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
呵呵 我的结果是 就只有第五个 也就是最后一个是非法的

如果 const int a4 = 1.0;
     int &b4 = a4;
成立 那么当修改b4的时候 a4岂不是被修改了
至于前面四个 确实可以 const引用确实可以初始化为不同类型的对象。 所以
    const float a1 = 1.0;
    const int &b1 = a1;  是成立的
至于输出结果 呵呵在VC6下和VS2010下不太一样 可能和编译器有关~~
VC6下
图片附件: 游客没有浏览图片的权限,请 登录注册

---
VS2010下
图片附件: 游客没有浏览图片的权限,请 登录注册

但可以肯定的是当const引用初始化为不同类型的对象时 是有临时变量在参与的 所以地址不一样。

梅尚程荀
马谭杨奚







                                                       
2012-07-28 20:16
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 7楼 lz1091914999
但是不敢确定不同编译器的不同类型之间常量引用是否有常量复本在参与。

梅尚程荀
马谭杨奚







                                                       
2012-07-29 10:08
快速回复:一个简单的实验
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022041 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved