是否可以在没有子类化的情况下为类添加一些功能?

nac*_*o4d 2 c++

在Ojective-C中有一些名为Categories的东西允许用户从原始的.h或.m文件(objective-c的.cpp版本)之外添加方法.我想知道在C++中是否存在这样的功能.

我特别希望实现<<运算符用于调试,也许还有我经常使用的库中的其他类.(并且不想使用宏,因为它看起来很难看;))

谢谢.

ken*_*ytm 5

您总是可以在类之外重载运算符.

std::ostream& operator<< (std::ostream& f, const YourClass& cls) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

friend如果需要访问YourClass的私有成员,您仍需要此功能.

(但是不可能像Objective-C那样定义普通的成员函数.)