混合全局函数和类成员函数C ++

时间:2013-12-03 15:28:52

标签: c++

从类的成员函数调用全局函数是不是很糟糕?我的意思是这样可以......

class MyClass
{
    void print_numb();
};

int get_numb()
{
   return 10;
}

void MyClass::print_numb()
{
     cout << get_numb() << endl;
}

2 个答案:

答案 0 :(得分:5)

如果get_numb()仅由实现MyClass的源文件使用,那么我会将其放在该源文件中的匿名命名空间中:

namespace /*no name here means the namespace is anonymous*/ {
    int get_numb()
    {
       return 10;
    }
}

隐藏它。我更喜欢这个类中的静态私有函数,因为它减少了类声明中的东西数量。

答案 1 :(得分:2)

从技术角度来看绝对可以:独立的功能,全局和静态,是语言的一部分。没有理由不使用它们。

风格也很好:标准C ++库提供了独立的功能,因此该语言的设计者绝对可以理解混合成员和非成员函数。

当然,您应该利用C ++功能,将您的功能与链接库中的功能隔离开来 - 通过降低对单个翻译单元的可见性,或者将它们放在命名空间中。