`
lufei1344
  • 浏览: 1150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

c++对象销毁的疑惑

C++ 
阅读更多

一直不太明白c++对象销毁的过程,

代码

#include <iostream>
using namespace std;
class X
{
 public:
  X(){
    cout << "X()" << endl;    
     }
  ~X(){
    cout << "~X()" << endl;

  }
  void show(){
   cout << "show()" << endl;

  }
};

int main(){
 
 X *x = 0;
 cout << x << endl;
 {
    X *xx = new X();
    x = xx;
    cout << xx << endl;

 }
   delete x;
   x->show();
   cout << x << endl;

}

 

结果

0
X()
0x3e4d20
~X()
show()
0x3e4d20

可是   x->show();还是可以的,那么对象被销毁了吗,还是只是调用了一次析构函数而已。

 

分享到:
评论
1 楼 ZeaLoVe 2011-11-26  
其实析构函数 执行并不释放内存的,内存那个地方还是你原来的对象,所以你还可以调用。。即使释放内存,如果不被重用,东西也一直在的。

相关推荐

    深度探索C++对象模型(侯捷 著)

    《深度探索C++对象模型》是侯捷翻译的一本关于C++对象模型深入探讨的专业书籍,原著作者为Stanley B. Lippman。这本书详细解析了C++中对象的内部表示、构造和析构的过程以及运行时行为等关键概念。它不仅仅是一本...

    C++对象模型.pdf

    《深度探索C++对象模型》这本书,由Stanley B. Lippman撰写,侯捷翻译,由华中科技大学出版社出版。本书致力于深入解析C++编译器在处理C++代码时所采取的复杂对象模型及其背后的底层机制,特别是针对构造函数、解构...

    C++ 编程基础教程

    7. **面向对象编程基础**:介绍类的定义、对象的创建和销毁,以及封装、继承和多态等面向对象编程的基本概念。 8. **构造函数与析构函数**:讨论类的初始化和清理机制,以及何时使用默认构造函数、拷贝构造函数和...

    c++等级考试二级模拟测试题

    2. **类与对象**:C++的核心特性是面向对象编程,因此考生需要理解类的定义、对象的创建与销毁、成员函数、访问修饰符(public、private、protected)以及封装的概念。 3. **继承与多态**:继承允许创建一个新类,...

    C++ 常见问题问与答

    析构函数在对象销毁前调用,用于清理资源。 10. **C++11及更高版本的新特性** - C++11引入了大量新特性,如lambda表达式、右值引用、auto类型推断、移动语义等,这些都极大地提升了C++的现代性和效率。 通过深入...

    21天学通C++第五版(英文版)全套PDF书+源代码+课后答案+勘误表

    这部分将涵盖类的设计、对象的创建与销毁、封装、继承和多态等概念。通过实例,读者可以学习如何使用这些工具构建可维护和可扩展的软件。 第15至20天,会涉及更高级的主题,如模板、STL(标准模板库)、异常处理和...

    C++&C语言帮助

    2. **构造函数和析构函数**:构造函数在创建对象时自动执行,析构函数在对象销毁时执行,用于初始化和清理资源。 3. **继承**:一个类可以从另一个类派生,继承其属性和方法,实现代码复用和扩展。 4. **多态性**:...

    C++常见问题问与答

    构造函数在对象创建时自动调用,析构函数在对象销毁前调用,用于资源清理。 13. **继承** 继承允许一个类(子类)从另一个类(父类)继承属性和方法,如`class Derived : public Base { ... }`表示Derived继承自...

    C++ under the Hood--Jan Gray.pdf (learning sbout c++ compiler)

    本章节深入探讨了C++编译器如何处理各种语言特性,特别是在类和对象的布局、成员函数调用以及继承等方面。以下是书中讨论的主要内容: 1. **类的布局**: - 类在内存中的布局对于性能至关重要。本书详细解释了类...

    为控件添加提示信息的例程

    在C++代码中,首先需要创建一个`CToolTipCtrl`对象,然后通过调用`Create`函数初始化。例如: ```cpp CToolTipCtrl toolTip; if (!toolTip.Create(this, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP)) { // 创建...

    数据结构与算法常见问题解答

    - **关于教材内容问题(包括错误和疑问)等数据结构技术性问题**:收集学生和教师反馈的技术性问题,旨在解决学习过程中遇到的各种疑惑和技术难题。 #### 二、数据结构的一般问题 - **伪代码到底是什么?**:伪...

Global site tag (gtag.js) - Google Analytics