当前位置:  开发笔记 > 编程语言 > 正文

控制符号可见性的标准方法

如何解决《控制符号可见性的标准方法》经验,为你挑选了2个好方法。

在C++中使用C和plain函数,我可以使用static关键字阻止函数的符号输出:

static int foo(int a, int b) { /* ...  */ }

但在一个类中,定义一个函数static具有完全不同的含义.有没有办法确保编译器我的整个类只能在模块中使用,而且不需要导出它的任何方法的符号?



1> Christian Ha..:

使用匿名命名空间.

namespace
{
    class C
    {
        C() {}
        void f() {}
    };

    void f();
}

class ExportedClass
{
    ExportedClass() {}
    void f() {}
};

void exportedFunction() {}

如您所见,您也应该为正常功能执行此操作.static不鼓励使用此方法.



2> Walter..:

您可以使用匿名命名空间.例如,

// file foo.cc
namespace {
    int symbol1 = 0;
    struct auxiliary { /* ... */ } symbol2;
}

void foo(int x)
{
  // uses symbol1 and symbol2
}

何时symbol1symbol2不"可见".

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有