|
1
8
不要将类型的成员与变量混淆。类/结构定义只是描述什么构成了一个类型,而没有实际声明任何变量的存在,任何要在内存中构造的东西,任何 可寻址的 . 在传统意义上,现代类设计实践建议你假装它们是“黑盒子”:东西进入,它们可以执行某些任务,可能输出一些其他信息。我们一直使用类方法来实现这一点,并简要描述它们 签名 并在.cpp/.cc/.cxx文件中隐藏实现细节。 虽然相同的理念也适用于成员,但C++的当前状态以及翻译单元如何单独编译使得这种方式更难实现。这里肯定没有什么“开箱即用”的东西能帮到你。基本的、根本的问题是,对于使用类的几乎任何东西,都需要知道字节的大小,这是受成员字段和声明顺序限制的。即使它们是私有的,并且类型范围之外的任何东西都不能操纵它们,它们仍然需要简单地知道它们是什么。 如果您真的想向外人隐藏这些信息,某些习惯用法(如PImpl和内联PImpl)会有所帮助。但我建议你不要走这条路,除非你真的:
该指南实际上所说的是永远不要在头中声明全局变量。任何利用标头的翻译单元,即使是间接的,最终都会根据标头指令声明自己的全局变量。当单独检查时,一切都会很好地编译,但是链接器会抱怨你对同一件事情有不止一个定义(这在C++中是一个很大的否定) 如果您需要保留内存/构造一些东西并将其绑定到变量的名称,请始终尝试在源文件中实现这一点。 |
![]() |
2
5
类成员变量
必须
通常在头文件中的类定义中声明。这应该在没有任何
只有
不
需要在头文件中声明的类成员和
|
|
3
3
作为一般规则: 要与同一类中的许多函数一起使用的变量在类声明中。 单个函数的临时变量在函数本身中。
看起来
|
![]() |
Joseph · swift 3什么是更好的形式?[副本] 7 年前 |
![]() |
ab123 · 在递归函数C++[闭合]中声明变量 7 年前 |
![]() |
Henry Barker · 带和不带指针声明符的C++11自动声明 9 年前 |