- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经在网上阅读了很多帖子和文章,但我找不到关于这个问题的明确答案。
我有一些具有类似目的的功能,我想在全局范围之外使用。其中一些需要是公开的,其他应该是私有(private)的(因为它们只是“公共(public)”函数的辅助函数)。此外,我不仅有函数,还有变量。它们仅由“私有(private)”辅助函数需要,并且也应该是私有(private)的。
现在有以下三种方式:
我该走什么路?结合其中一些方式的可能方式?
我想到了这样的事情:
谢谢。
最佳答案
如前所述,使用全局变量通常是糟糕的工程实践,当然除非绝对需要(例如映射硬件,但这种情况并不经常发生)。
将所有内容存储在一个类中是您在类 Java 语言中会做的事情,但在 C++ 中您不必这样做,事实上,在这里使用 namespace 是一个更好的选择,如果:
这是一个典型的实现:
// foo.h
#ifndef MYPROJECT_FOO_H_INCLUDED
#define MYPROJECT_FOO_H_INCLUDED
namespace myproject {
void foo();
void foomore();
}
#endif // MYPROJECT_FOO_H_INCLUDED
// foo.cpp
#include "myproject/foo.h"
namespace myproject {
namespace {
typedef XXXX MyHelperType;
void bar(MyHelperType& helper);
} // anonymous
void foo() {
MyHelperType helper = /**/;
bar(helper);
}
void foomore() {
MyHelperType helper = /**/;
bar(helper);
bar(helper);
}
} // myproject
整齐地隐藏在源文件中的匿名命名空间是一个增强的 private
部分:客户端不仅不能使用其中的内容,而且他甚至根本看不到它(因为它在源文件中),因此不依赖于它(它具有明确的 ABI 和编译时优势!)
关于C++,静态与命名空间与单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54438920/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!