社区
C++ 语言
帖子详情
这样使用引用会产生隐藏对象吗?
tkminigame
2009-06-13 12:49:39
void A(int* p){
int& a= *(int*)p;
}
int _tmain(int argc, _TCHAR* argv[])
{
int* p = new int();
A(p);
}
...全文
21
14
打赏
收藏
这样使用引用会产生隐藏对象吗?
void A(int* p){ int& a= *(int*)p; } int _tmain(int argc, _TCHAR* argv[]) { int* p = new int(); A(p); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tkminigame
2009-06-15
打赏
举报
回复
[Quote=引用 11 楼 neohope 的回复:]
void A(void* p){
int& a= *(int*)p;
cout < <a < <endl;
}
int& a= *(int*)p;
问题在这里,你把非指针当指针用,还用错了
int *a=(int*)p;
[/Quote]
你搞错我的意思了。我这个想讨论的是错误的类型引用会造成怎样的不可预知的结果?假设a是某接口,这样用会埋下严重的隐患。引用是不是不应该指向堆。。。
lpf000
2009-06-15
打赏
举报
回复
强制转换 可能产生临时对象吧,
lpf000
2009-06-15
打赏
举报
回复
你的意思是?
编译器内部实现引用其实也是占内存的类似指针
neohope
2009-06-15
打赏
举报
回复
void A(void* p){
int& a= *(int*)p;
cout < <a < <endl;
}
int& a= *(int*)p;
问题在这里,你把非指针当指针用,还用错了
int *a=(int*)p;
andylovecandy
2009-06-14
打赏
举报
回复
是临时对象吧?
kingstarer
2009-06-14
打赏
举报
回复
就一个基本类型哪来对象之说
你把引用看成是指针就可以解释程序的输出了
superbtl
2009-06-14
打赏
举报
回复
是引用吧 隐藏式C++多态的时候的一个名词啊 是父类与子类的
中才德创
2009-06-14
打赏
举报
回复
up
tkminigame
2009-06-14
打赏
举报
回复
我觉得不能够吧引用当成一个指针,因为编译器肯定不会把引用当指针处理。引用最贴切的说明是异名(alias),事实上大多数引用就是这么用的。
这里主要不是讨论引用是什么,而是那些错误产生的原因。我不得不重新考虑所有我用过引用地方的疏漏。
tkminigame
2009-06-13
打赏
举报
回复
这样写
void A(void* p){
int& a= *(int*)p;
cout<<a<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
float* p = new float(1.1111f);
A((void*)p);
}
产生的结果
1066285190
Press any key to continue . . .
这样写
void A(void* p){
float& a= *(float*)p;
//a=a+1.0f;
cout<<a<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int* p = new int(10);
A((void*)p);
cout<<*p<<endl;
}
产生的结果
1.4013e-044
10
Press any key to continue . . .
把注释那行去掉后再跑的结果
1
1065353216
Press any key to continue . . .
怎么解释
tkminigame
2009-06-13
打赏
举报
回复
如果
int i;
float& a= i;
这样就会产生隐藏对象,书上这么写的,不过我这里编译器通不过。
但这样写是可以的
void A(void* p){
float& a= *(float*)p;
}
tkminigame
2009-06-13
打赏
举报
回复
这样写的,抱歉开始弄错了
void A(void* p){
int& a= *(int*)p;
}
int _tmain(int argc, _TCHAR* argv[])
{
int* p = new int();
A((void*)p);
}
猫已经找不回了
2009-06-13
打赏
举报
回复
引用产生隐藏对象?
没听过,什么意思?
pengzhixi
2009-06-13
打赏
举报
回复
你是说临时对象吧.我这没产生.
Java
对象
与
对象
引用
高级知识精讲
3、理解JVM监控工具方式、理解JVM
对象
结构和
引用
方式,包括扩展理解本课程中关于CAS、AQS、JUC的知识点,是同学们能正确进行Java高并发场景下编程的根基,至少同学们不
会
再犯“在局部变量
使用
JUC集合”这样的错误。...
C++每日一问:什么是面向
对象
?面向
对象
的三大特性
面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车发动、汽车熄火,这是两个不同的事件,对于面向过程而言,我们关心的是事件本身,因此我们
会
使用
两个函数完成以上两个动作,然后依次调用即可。...
什么是类?什么是
对象
?类与
对象
之间是什么关系?类的特性有哪些?
二、什么是
对象
? 1、
对象
是一种具体概念 2、
对象
:
对象
是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
对象
具有状态,一个
对象
用数据值来描述它的状态。
对象
还有操作,用于
值
对象
与
引用
对象
概念介绍
对象
与
对象
引用
父类
引用
指向子类
对象
详解
父类
引用
指向子类
对象
父类
引用
指向子类
对象
指的是: 例如父类Animal,子类Cat,Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。 Animal animal = new Cat(); 即声明的是父类,实际指向的...
C++ 语言
64,642
社区成员
250,580
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章