出发点:方便。把辅助函数直接写在头文件中,需要就直接include。
可如果普通的定义,一旦文件被2个cpp引用,就会有multiple definition错误。
鉴于头文件中可以定义一个类,包括在类中定义函数。
再考虑到friend关键词,可以让函数作用域扩展到包含该类定义的作用域
于是得出以下形式的方式:
void func(); // declare
class anyway {
friend void func() {
// body
}
};
如果不在外部先声明,会找不到这个函数。用struct也行。
先声明,然后在一个辅助类中以友元方式写入函数定义。
从此肆无忌惮的include。
不过不知道会不会有什么副作用。。。
可能实际中不会需要这种方便的吧,还是乖乖的把定义写在cpp,甚至可以直接编成库了……
只是project中又要添加各种目录。这样做只要头文件目录就够了……