从类的成员函数调用全局函数是不是很糟糕?我的意思是这样可以......
class MyClass
{
void print_numb();
};
int get_numb()
{
return 10;
}
void MyClass::print_numb()
{
cout << get_numb() << endl;
}
答案 0 :(得分:5)
如果get_numb()
仅由实现MyClass
的源文件使用,那么我会将其放在该源文件中的匿名命名空间中:
namespace /*no name here means the namespace is anonymous*/ {
int get_numb()
{
return 10;
}
}
隐藏它。我更喜欢这个类中的静态私有函数,因为它减少了类声明中的东西数量。
答案 1 :(得分:2)
从技术角度来看绝对可以:独立的功能,全局和静态,是语言的一部分。没有理由不使用它们。
风格也很好:标准C ++库提供了独立的功能,因此该语言的设计者绝对可以理解混合成员和非成员函数。
当然,您应该利用C ++功能,将您的功能与链接库中的功能隔离开来 - 通过降低对单个翻译单元的可见性,或者将它们放在命名空间中。