1. 这个c++析构函数要怎么写 这类写的有意思 。。。嘿嘿
看一楼 , 一楼解释的很清楚了 。最好把防止复制对象 , 把operator = 和复制构造函数设为private 。
PS:
已经回答 , 请查看 。
PS的PS:
那帖子已经达到修改上限 , 在这里修改了 。
你说的对 , 那类是自我调用 , 每次new的时候已经初始化了next了 。
刚才又看了下 , 是析构函数中的问题 。
while循环中
上一个对象已经把它析构了 , 然而它自己本身while还是在循环析构后面的 , 每个对象都是这样 , 所以会错误 。
2. c++的构造函数 class A有两个构造函数 , 一个是没有参数的A() , 另一个是需要一个参数的 A(A &a) 。一个类有两个同名函数涉及到C++的一个概念 , 即函数重载 。关于重载函数 , 请参看你的教材 。
main 函数中调用A()来实例化一个对象a , 执行了构造函数A() , 因此输出'a'. 如果再执行一句
A b = A(&a); 则将打印'b'.
c是析构函数~A()输出的 , C++中 , 一个类的对象在退出作用域前将自动调用析构函数 。因此在上例中 , main函数退出前 , 会执行a.~A(); 至于为什么这样设计 , lz以后会慢慢知道的 。good luck 。
3. 析构函数怎么用 摘 要:构造函数与析构函数是一个类中看似较为简单的两类函数 , 但在实际运用过程中总会出现一些意想不到的运行错误 。本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用 , 以及在使用过程中需要注意的若干事项 。
关键字:构造函数;析构函数;垃圾回收器;非托管资源;托管资源
一.构造函数与析构函数的原理
作为比C更先进的语言 , C#提供了更好的机制来增强程序的安全性 。C#编译器具有严格的类型安全检查功能 , 它几乎能找出程序中所有的语法问题 , 这的确帮了程序员的大忙 。但是程序通过了编译检查并不表示错误已经不存在了 , 在“错误”的大家庭里 , “语法错误”的地位只能算是冰山一角 。级别高的错误通常隐藏得很深 , 不容易发现 。
根据经验 , 不少难以察觉的程序错误是由于变量没有被正确初始化或清除造成的 , 而初始化和清除工作很容易被人遗忘 。微软利用面向对象的概念在设计C#语言时充分考虑了这个问题并很好地予以解决:把对象的初始化工作放在构造函数中 , 把清除工作放在析构函数中 。当对象被创建时 , 构造函数被自动执行 。当对象消亡时 , 析构函数被自动执行 。这样就不用担心忘记对象的初始化和清除工作 。
二.构造函数在C#中的运用
构造函数的名字不能随便起 , 必须让编译器认得出才可以被自动执行 。它的命名方法既简单又合理:让构造函数与类同名 。除了名字外 , 构造函数的另一个特别之处是没有返回值类型 , 这与返回值类型为void的函数不同 。如果它有返回值类型 , 那么编译器将不知所措 。在你可以访问一个类的方法、属性或任何其它东西之前 , 第一条执行的语句是包含有相应类的构造函数 。甚至你自己不写一个构造函数 , 也会有一个缺省构造函数提供给你 。
class TestClass
{
public TestClass(): base() {} // 由CLR提供
}
下面列举了几种类型的构造函数