zoukankan      html  css  js  c++  java
  • 析构函数

    “析”字,我容易理解为“分析”,好象是最开头的事,但析字本身都是分开的含义,以后,我应该多记这个词语“分崩离析”。析构函数是与构造函数相对应的,一个构造,一个销毁。看帮助文档里面,对析构函数的条条框框还是挺多的:
    ·一个类只能有一个析构函数;
    ·析构函数必须与类同名;
    ·无法继承或重载析构函数;
    ·无法调用析构函数,它们是被自动调用的;
    ·析构函数即没有修饰符,没有参数,也没有返回值;
    ·如果类没显式的析构函数,系统会自动构建一个空的;
    实例:
    ·写成public ~point()...,结果编译器提示:修饰符“public”对该项无效
    ·写在void ~point()...,结果编译器提示:类、结构或接口成员声明中的标记“~”
    无效
    ·写成~point(int i)...,结果编译器提示一堆:应输入 )、应输入 ;……
    ·~point内部写上一句return false;,结果编译器提示:由于“point.~point()”返
    回void,返回关键字后面不得有对象表达式

    本来想写一个构造函数占用内存,然后析构函数释放内存的代码,但自己缺太多,写不出来。如占用内存,本来想用int[] a=new int[700000];这个语句,但发现有它没它,程序运行时也一样占10M左右。如果数组的量再大些,则编译没有问题,但运行时,建立对象后立即就销毁,没有任何出错提示,原因未知。
    如何销毁对象,我使用的是p=null;,有没有效果不得而知。另外用{}的代码段中定义
    对象,出了代码段,对象也会无效,但这样也不会执行析构语句。要让系统执行析构语句真难。
    测试用的代码如下:

    using System;

    class m
    {
     
    static void Main()
     
    {
      
    {point p=new point();
       p
    =null;}

      Console.ReadLine();
     }

    }


    class point
    {
    // int[] a=new int[700000];

     
    ~point()
     
    {
      Console.WriteLine(
    "unload");
     }

    }
  • 相关阅读:
    [NOI2004]郁闷的出纳员
    【数论】[SDOI2010]古代猪文
    【2-SAT】[JSOI2010]满汉全席
    【数位DP】CF55D Beautiful numbers
    c语言编译的四个阶段
    转评:Python集合
    转评:Python字典
    Python iterators and generators:迭代器和生成器
    Python函数-具备特定功能的可以有参数和返回值的可重用的代码块儿
    Python-简版List和Tuple
  • 原文地址:https://www.cnblogs.com/yzx99/p/1207170.html
Copyright © 2011-2022 走看看