程序设计语言

     摘要: 证明: C++中的友元运算符函数operator@不能属于任何类, 也就是说该友元不能是友元成员.

proof:


友元运算符函数只能是一般的类外部友元函数, 而不能是属于某个类的友元成员函数. 如果operator@是A类的成员函数, 同时又是B类的友元, 假设@是m目运算符, 则A类要求operator@只带有n-1个参数. 但同时作为B类的友元, B类要求operator@带有n个参数(因为没有B类的this指针), 由此矛盾.


哇哈哈, 竟然证明C++的语言特性, 这倒是第一次, 值得留念!
  阅读全文

posted @ 2006-09-08 21:37 樱木 阅读(368) | 评论 (0)  编辑 |

     摘要: 今天用类模板写了一个可扩展空间的栈. compile没问题, 一run就发现报链接错误, 说几个类的成员函数都找不到:
error LNK2001: unresolved external symbol ****. 检查了一下, 发现和以前写的没什么两样啊, 后来才发现原来所有的函数定义及实现都是放在一个.h中, 现在遵循良好的设计规范, 把类定义放在.h中, 类的实现放在.cpp中反而出错了?? 晕!

网上查了一点资料, 发现VC6好像是不支持分开写的, (不是模板当然可以!), 无论是类模板还是函数模板, 都必须写在一个.h文件中. 有人可能会说那么这个包含方法实现的头文件如果多个其他文件include它, 那不是就有问题了么? 要不要#pragma once呀, 这里明确告诉你, 不用的. <>里面说, 因为类模板的.h文件和普通类的.h文件在编译器处理的时候好像是有区别的. 原因自己去看书吧, 不过书里说得不多,我也忘记啦.  阅读全文

posted @ 2006-09-04 22:43 樱木 阅读(1383) | 评论 (0)  编辑 |