C++编码规范之嵌套类
Nested Class
当公开嵌套类作为接口的一部分时,虽然可以直接将他们保持在全局作用域中,但将嵌套类的声明置于命名空间是更好的选择。
可以在一个类中定义另一个类,嵌套类也称为成员类。
class Foo
{
private:
//Bar是嵌套在Foo中的成员类
class Bar{
...
};
};
优点:当前套类只能在被嵌套类中使用时很有用,将其置于被嵌套类作用域作为被嵌套类的成员不会污染其他作用域同名类。可在被嵌套类中前置声明嵌套类,在.cc文件中定义嵌套类,避免在被嵌套类中包含嵌套类的定义,因为嵌套类的定义通常只与实现。
缺点:只能在被嵌套类的定义中才能前置声明嵌套类。因此任何使用Foo::Bar*指针的头文件必须包含整个Foo声明。
结论:不要将嵌套类定义为public除非它们是接口的一部分。
3)非成员函数(Nonmember),静态成员函数(static Member)和全局函数(Global Functions)
使用命名空间中的非成员函数或者静态成员函数,尽量不要使用全局函数。
优点:某些情况下,非成员函数和静态成员函数是非常有用的,将非成员函数置于命名空间中可避免对全局作用域的污染。
缺点:将非成员函数和静态成员函数作为新类的成员或许更有意义,当他们需要访问外部资源或具有重要依赖时更是如此。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。