| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖, 1 人收藏
标题:c++中的析构函数
只看楼主 加入收藏
gold615
Rank: 2
等 级:论坛游民
帖 子:54
专家分:75
注 册:2014-6-7
结帖率:55.56%
收藏(1)
已结贴  问题点数:20 回复次数:5 
c++中的析构函数
c++中的析构函数看书上说是程序运行到最后的时候会自动调用,但是如果在程序运行中调用呢?按理说一旦调用析构函数,变量就应该不存在了吧,但是这里却明确显示这个被提前析构后的参数依然存在,而且最后又被析构了一次,是程序自动跳过了主动析构函数的执行?我用的是cfree编译的。
#include<iostream>
using namespace std;
class Location
{
    public:
        Location(int x,int y);
        ~Location();
        int Get_X();
        int Get_Y();
        //void f(Location p);
    private:
        int X,Y;
};
Location::Location(int x,int y)
{
    cout<<"location called\n";
    X=x;Y=y;
}
Location::~Location()
{
    cout<<"destructor\n";
}
int Location::Get_X()
{
    return X;
}
int Location::Get_Y()
{
    return Y;
}
void f(Location p)
{
    cout<<p.Get_X()<<'\t'<<p.Get_Y()<<endl;
}
main()
{
    Location A(1,2);
    A.~Location();//为什么这个地方调用析构函数后,依下边的函数依然可以打印出A的元素?
    cout<<A.Get_X()<<endl;
    f(A);
}
搜索更多相关主题的帖子: private include public 而且 
2015-10-01 16:11
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:5 
析构函数不能自己调用吧?

一片落叶掉进了回忆的流年。
2015-10-01 21:51
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
收藏
得分:5 
显式调用析构函数的时候,只是单纯执行析构函数内的语句,不会释放栈内存,摧毁对象
2015-10-01 21:56
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
从运行状况来看应该是如三楼所说
2015-10-01 22:04
gold615
Rank: 2
等 级:论坛游民
帖 子:54
专家分:75
注 册:2014-6-7
收藏
得分:0 
确实好像看起来是这样 只能由系统自己调用
2015-10-01 22:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

授人以渔,不授人以鱼。
2015-10-04 22:32
快速回复:c++中的析构函数
数据加载中...
 
   



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

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