| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1006 人关注过本帖
标题:怎么调用析构函数??
只看楼主 加入收藏
caiqiufu
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-12-14
收藏
 问题点数:0 回复次数:4 
怎么调用析构函数??
#include<iostream.h>
class A
{
public:
A(int i=0)
{m=i;cout<<"Constructor called."<<m<<endl;}
void Print() const
{cout<<m<<endl;}
~A()
{cout<<"Destructor called."<<m<<endl;}
private:
int m;
};
void main()
{
const int N=5;
A my;
my=N;//该处为什么调用了一次析构函数??
my.Print();
}
搜索更多相关主题的帖子: 函数 int cout endl void 
2006-12-21 22:55
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
my=N; 不出错吗?

[此贴子已经被作者于2006-12-22 11:30:45编辑过]


2006-12-22 11:30
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用dragonfly在2006-12-22 11:30:11的发言:
my=N; 不出错吗?

自然不会出错。。
拷贝构造函数,付值操作符,以及析构函数,被称作三个火枪手,他们经常都是同时出现的,
你用了默认的付值操作符,它应该是这样的:operator = (A&) ;它首先用N初始化一个临时对象,
然后将这个对象的值浅拷贝给你操作符前面的对象,如果说他调用了析购函数,那肯定是对这个
临时对象的析构。。


天行健,君子以自强不息!!QQ:68660681
2006-12-22 12:54
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
以下是引用maoguoqing在2006-12-22 12:54:47的发言:

自然不会出错。。
拷贝构造函数,付值操作符,以及析构函数,被称作三个火枪手,他们经常都是同时出现的,
你用了默认的付值操作符,它应该是这样的:operator = (A&) ;它首先用N初始化一个临时对象,
然后将这个对象的值浅拷贝给你操作符前面的对象,如果说他调用了析购函数,那肯定是对这个
临时对象的析构。。

付值操作符重载是被编译器默认了的?


2006-12-25 10:40
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
当然。。。每一个类都有一个默认的付值操作符操作符。。

天行健,君子以自强不息!!QQ:68660681
2006-12-25 10:52
快速回复:怎么调用析构函数??
数据加载中...
 
   



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

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