| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:一个传递对象的疑惑
取消只看楼主 加入收藏
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
 问题点数:0 回复次数:2 
一个传递对象的疑惑
下面这个程序是对象传递,它存在着潜在的问题应该在参数里使用引用,我不太清楚ob被销毁时,调用析构函数清除它所指向的内存,那它怎么还会被对象a使用???使用引用的话,就不必清除ob了吗??
#include<iostream>
#include<cstdlib>
using namespace std;
class myclass{
int *p;
public:
myclass(int i);
~myclass();
int getval(){
return *p;};
myclass::myclass(int i){
cout<<"allocating";
p=new int;
*p=i;}
myclass::~myclass(){
cout<<"freeing";
delete p;
}
void display(myclass ob)
{cout<<ob.getval()<<'\n';
}
int main(){
myclass a(10);
display(a);
return 0;
}
搜索更多相关主题的帖子: myclass int 内存 对象 cout 
2006-05-20 22:54
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 

那是不是对象作为参数在不使用动态存储时最好是使用引用呢?对象作为参数传递的时候只能调用复制构造函数吗?
如果局部对象使用动态内存的话在对象,可不可以这样理解:
(1)如果对象传递对象的话会存在潜在问题
(2)如果引用传递的话局部对象,撤销时会造成实参内存丢失
(3)复制构造函数使局部变量和 实参不使用一个内存,失去局部变量也不会影响实参。

[此贴子已经被作者于2006-5-21 21:23:06编辑过]


我是小小登山者!
2006-05-21 21:13
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 
myclass & myclass::operator =(const myclass & object)
{
if(this == &object)
return *this;
delete p;
p = new int;
*p = *(object.p);
return *this;
}
请问一下,为什么要重新给p分配空间?为什么要调用运算符的重载呢?我现在有些搞不清楚在程序里什么时候应该有运算符的重载出现??辛苦了!!谢谢

[此贴子已经被作者于2006-5-21 23:27:32编辑过]


我是小小登山者!
2006-05-21 23:27
快速回复:一个传递对象的疑惑
数据加载中...
 
   



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

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