虚构函数问题

[复制链接]
 楼主| xsgy123 发表于 2012-7-17 21:55 | 显示全部楼层 |阅读模式
void Sample::fun()
{

~Sampe();

}

为什么错误?


据说,必须加上this指针,才对


2. typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));

这是什么语法
火箭球迷 发表于 2012-7-17 22:05 | 显示全部楼层
1.任何函数都不能调用类的构造函数,析构函数的。你在这里调用了~Sampe()构造函数,当然是错误的,加了this也不行,这是规定。
2.这里应该是类型定义,定义了一个指向函数OF的指针alloc_func
dfsa 发表于 2012-7-17 22:11 | 显示全部楼层
虚构函数不能在任何函数里面调用,他的默认调用就是 你delete obj 以后会自动调用。所以也不建议你家this 调用
另外typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
我不才,没有看出来。不知道 OF 是干啥的,如果吧OF去掉 就是一个函数指针的声明。
pkat 发表于 2012-7-17 22:20 | 显示全部楼层
在通常写代码的过程中,在一个类的外部,不能显式调用析构函数,这个是基本常识,因为这样对象会被析构,但该对象所占用的内容并不能回收。

在一个类的成员函数中,调用析构函数就更加说不通了,你想想,要是那个成员函数能够成功被调用,那么必须存在相应的一个对象,而在该成员函数中,又要析构该对象,这样对象就不存在了,对象都不存在了,你还怎么调用那个成员函数呢?在概念上是一个死循环。
秋天落叶 发表于 2012-7-17 22:25 | 显示全部楼层
为什么要加this,析构函数的特性吗。
因为其他函数是完全不需要加的嘛。
对这个问题的话,应该是C++的语法规定。

比如规定了类的成员函数不能直接使用类的析构函数。
如果加了一个this,那么就是类似通过例外一个途径访问到其析构函数了。所以就通过了。


析构函数也不一定要析构东西啊。
我直接在里面输出一段字符串也没问题,甚至当构造函数用都可以吧。里面的操作都是我程序员自己定义的。
txcy 发表于 2012-7-18 21:32 | 显示全部楼层
建议LZ找本C++的书,把析构函数那块再看看
无冕之王 发表于 2012-7-18 21:41 | 显示全部楼层
1.任何函数都不能调用类的构造函数,析构函数的。你在这里调用了~Sampe()构造函数,当然是错误的,加了this也不行,这是规定。
2.这里应该是类型定义,定义了一个指向函数OF的指针alloc_func ...
火箭球迷 发表于 2012-7-17 22:05

分析的很清楚了
baidudz 发表于 2012-7-18 21:55 | 显示全部楼层
以前学习C++的时候,这个地方也是没弄明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部