`

析构函数显式调用

 
阅读更多

#include <iostream>
#include <string>
using namespace std;
class student
{
public:
	student()
	{
		cout << "constructing student." << endl;
		shours = 60;
		gpa = 6;
	}
	~student()
	{
		cout << "destructing student." << endl;
	}
private:
	int shours;
	int gpa;
};
class teacher
{
public:
	teacher()
	{
		cout << "constructing teacher ." << endl;
	}
	~teacher()
	{
		cout << "destructing teacher." << endl;
	}
};
void main()
{
	student stu1;
	teacher tea1;

	stu1.~student();
	tea1.~teacher();

	std::cout << sizeof(student) << endl;
	cout << "end in main" << endl;
}

  • 大小: 34.7 KB
分享到:
评论

相关推荐

    构造函数与析构函数

    如果用户没有显式地提供析构函数,系统会提供一个默认的析构函数。析构函数也是以类名作为函数名,与构造函数不同的是在函数名前添加一个“~”符号,标识该函数是析构函数。析构函数没有返回值,甚至void类型也不...

    析构函数的作用 什么是析构函数

    4、不能显式地调用析构函数,而是由系统自动调用。 定义析构函数格式为: ~类名() {…}  由于c#得到自动内存管理的支持,当对象生命期结束后,系统能够自动回收那些对象应该释放的资源等,所以一般不需要程序员...

    PHP析构函数destruct与垃圾回收机制的讲解

    析构函数 当某个对象成为垃圾或者当对象被显式销毁时执行。 PHP5中提供的析构函数是__destruct,其与构造方法__construct相对应。 垃圾回收——GC(Garbage ...析构函数是由系统自动调用的,也可以被显式调用,但不要这

    析构函数与php的垃圾回收机制详解

    析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。 GC(Garbage Collector) ...析构函数也可以被显式调用,但不要这样去做。 析构函数是由系统自动调用的,不要在程序中调用一个对象的虚构函数。 析构函

    Python析构函数__del__定义原理解析

    A、使用del 显式的调用析构函数删除对象时:del对象名;  class Foo: def __init__(self,x): self.x=x def __del__(self): #在对象资源被释放时触发 print('-----del------') print(self)  f=Foo(100000)  ...

    C++学习笔记:关于C++类与动态内存分配中布局new操作符

    C++学习笔记:关于C++类与动态内存分配中布局new操作符 ...我们了解到,布局new操作符用于在现有的内存块上创建对象,需要使用delete[]操作符来释放内存,并且需要显式地调用析构函数以释放对象占用的资源。

    C#中标准的IDispose模式代码详解

    C#实现IDispose接口 .net的GC机制有两个问题:首先GC并不能释放所有资源,它更不能释放非托管资源。其次,GC也不是实时的,所有GC... //手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构

    详解在C++中显式默认设置的函数和已删除的函数的方法

    已删除的函数还可为您提供简单语言,以防止所有类型的函数(特殊成员函数和普通成员函数以及非成员函数)的参数中出现有问题的类型提升,这会导致意外的函数调用。 显式默认设置的函数和已删除函数的好处 在 C++ 中...

    C 程序设计课件:第14章 堆与拷贝构造函数.ppt

    堆对象创建时(new)自动调用构造函数,释放时(delete)自动调用析构函数。有三种形式分配堆对象:形式 1 是指针标识符 = new 类型标识符;形式 2 是指针标识符 = new 类型标识符 ( 初始化值 ) ;形式 3 是指针...

    C++之继承和动态内存分配

    如果在派生类中没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数,实际上,派生类的默认构造函数总要进行一些操作:执行自身的代码后调用基类析构函数。因为派生类没有任何特殊操作,所以使用默认析...

    VisualC++中删除托管对象、包装库及其他

    BernieSanders答:是安全的,可以在托管C++中删除托管对象,不过要知道,delete所做的就是调用对象的析构函数,所以必须显式定义它。调用delete并没有释放对象的存储空间。只有垃圾回收器才能够释放存储空间。图1所...

    C#多线程开发多个实例

    //析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法 ~Class1() { Dispose(false); } //通过实现该接口,客户可以显式地释放对象,而不需要等待GC来释放资源,据说那样会...

    构造与析构顺序

    构造与析构在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是构造函数(Constructor)。 初始化对象的...

    C++语言程序设计复习题知识.pdf

    正确的答案是C、析构函数和构造函数一样可以有参数。这道题考察了C++语言中的类和对象的析构函数的使用。 6. 的功能是对对象进行初始化: 正确的答案是C、构造函数。这道题考察了C++语言中的类和对象的构造函数的...

    2021年C程序设计基整理题库.doc

    16. 析构函数:题库中提到析构函数特性中,一种类中只能定义一种析构函数。 17. 访问权限:题库中提到如果类成员在定义时使用核心字public来设立访问权限,则该成员是公有类型。 18. 成员函数特性:题库中提到成员...

    Effective.C++.中文第二版.50条款doc文档.chm

    条款6:析构函数里对指针成员调用delete 条款7:预先准备好内存不够的情况 条款8: 写operator new和operator delete时要遵循常规 条款9: 避免隐藏标准形式的new 条款10: 如果写了operator new就要同时写operator ...

    C++复习资料之系列

    ( c ) 可以在程序的任何地方 (d) 必须在其它函数中间 2.用C++语言编制的源程序要变为目标程序必须要经过( d )。 (a) 解释 (b) 汇编 (c) 编辑 (d) 编译 3.C++程序基本单位是( c )。 (a) 数据 (b) 字符 (c) ...

    visualC++2010入门经典源代码

    8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 类和结构中的联合 372 8.4 运算符重载 373 …… 第9章 类继承和虚...

    [Visual.C++.2010入门经典(第5版)].Ivor.Horton.part1

    8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 类和结构中的联合 372 8.4 运算符重载 373 …… 第9章 类继承和虚函数 第10...

Global site tag (gtag.js) - Google Analytics