美好的一天!为什么我在重载 std::ostream& operator<<(std::ostream& os, T x) 时不需要使用 __declspec(dllexport) ?当然 operator<< 在DLL文件中定义并在别处使用(不在DLL文件中) . 我有这个代码:

std::ostream& operator<<(std::ostream& os, const vector3d& vec) {
        os << "x: " << vec.x << ", y:" << vec.y << ", z:" << vec.z;
        return os; }

这是用bob.dll编写的 . 我想在an.exe中使用它 . 为什么我不需要像这样使用 __declspec(dllexport)

std::ostream& __declspec(dllexport) operator<<(std::ostream& os, const vector3d& vec) {
        os << "x: " << vec.x << ", y:" << vec.y << ", z:" << vec.z;
        return os; }

例如,在编写vector3d类时,我必须这样做:

class __desclspec(dllexport) vector3d { … }

为什么这与 operator<< 功能不同?