枚举常量也是一种整型,其值在编译时确定,因此也可以出现在常量表达式中,可以用于初始化全局变量或者作为case 分支的判断条件。...有一点需要注意,虽然结构体的成员名和变量名不在同一命名空间中,但枚举的成员名却和变量名在同一命名空间中,所以会出现命名冲突。那什么是命名空间呢?...,可以看到打印完之后里面的rectanger变量就会被释放,但polar变量得等整个函数调用完毕才会释放,因为这里使用的是枚举类型中的成员。...局部变量存储空间地址也许会随着每次函数调用时而不同,如果你设定了初值,那空间怎么变里面的值都是你赋予的那个,但如果没有初始化,那每次运行都是不确定的值。...static变量不同于以前我们讲的局部变量,它并不是在调用函数时分配,在函数返回时释放,而是像全局变量一样静态分配,所以用“static”(静态)这个词。
良好统一的命名方式能让我们在不需要去查找类型声明的条件下快速了解某个名字代表的含义。命名涉及目录、文件、名字空间、类型、函数、变量、枚举、宏等等。...所有类型命名 —— 类、结构体、枚举、类型定义(typedef)、类型模板参数,均使用相同约定。...5.变量命名 变量(包括函数参数)和数据成员(不管是静态的还是非静态)名推荐使用小驼峰式命名法。...const的变量,或在程序运行期间其值始终保持不变的常量,命名时以“const”开头,例如: const int constDaysInAWeek = 7; 6.枚举与宏命名 枚举命名和宏命名方式一致,...下面示例中枚举名 UrlTableErrors 是类型,所以采用Pascal命名方法。
内联函数必须放在 .h 文件中. 如果内联函数比较短, 就直接放在 .h 中. 6.3....所有类型命名 —— 类, 结构体, 类型定义 (typedef), 枚举 —— 均使用相同约定....如果你在循环中调用这样的函数甚至都不用缓存其返回值, 小写命名就可以接受. 6.7....枚举命名 枚举的命名应当和 常量 或 宏 一致: kEnumName 或是 ENUM_NAME. 单独的枚举值应该优先采用 常量 的命名方式. 但 宏 方式的命名也可以接受....如果不得不用, 其命名像枚举命名一样全部大写, 使用下划线: #define ROUND(x) ... #define PI_ROUNDED 3.0 6.10.
本文要点: 支持多函数方法 使用委托和枚举。 用网格显示2D函数。 定义三维空间中的表面。 本教程是上一篇 构建视图 的延续,将会展示更多更复杂的函数和功能。...去掉此脚本中的默认代码。保留 UnityEngine命名空间,然后定义一个名为GraphFunction的公共委托类型。这与类或结构定义不同,它后面必须是分号。 ?...接下来,使用Update中的数组,使用Function 实例字段对其进行索引。在此之后,我们终于可以删除if-else代码段了。 ?...既然可以增加事件维度,是否可以增加空间上的维度呢? 之前的示例都是使用X维作为函数的空间输入。Y维用于显示输出。这里可以让Z作为第二个空间维用于输入。...还需要将参数添加到视图的两个静态函数中,虽然他们目前还没有使用额外的维度来参与计算,但委托的参数个数和类型必须匹配。 ?
通过使用枚举,我们可以通过符号标识来比较各个成员,我们还可以对枚举本身进行迭代。...,缓存无所不在。...下面的代码定义了一个斐波拉契函数,由于该函数的运算需要多次递归,每次递归都会执行相同的工作,因此使用缓存能够加速它的计算。...其装饰器会自动生成特征方法,例如 __init__() 和 __repr()__,这能够帮助减少样本代码的数量。在官方文档中,它们被称作 “具有默认值的可变命名元组” 。...然而在 Python 3 中,通过使用隐式命名空间包(Implicit Namespace Package: https://www.python.org/dev/peps/pep-0420/ ),这些文件就不再需要了
第一步,new表达式调用一个名为 operator new的标准库函数,来分配一块足够大的,原始的,未命名的内存空间,以便存储特定类型的对象(或者对象的数组)。...第二步,编译器运行相应的构造函数,以构造这些对象,并为其传入初始值。 第三步,对象被分配的空间并构造完成,返回一个指向该对象的指针。...在类中自定义的 operator new和 operator delete函数是隐式静态的。...含有构造函数或析构函数的类类型,也可以作为 union的成员类型。 union可以为其成员指定 public、proteced和 private等保护标记,但默认情况下,其成员都是公有的。...在局部类中也不允许声明静态数据成员,因为没法定义这样的成员。 外层函数对局部类的私有成员没有任何访问特权。 局部类只能访问外层作用域定义的类型名、静态变量以及枚举成员。
非静态数据成员或枚举器),这时会发生名称冲突。...在类外部定义的友元函数,其查找规则与命名空间中的函数相同。限定名称查找限定名称查找用于处理在作用域解析操作符::右侧出现的名称。...这种名称可以指向: 类成员(包括静态和非静态函数、类型、模板等) 命名空间成员(包括另一个命名空间) 通常在命名空间的作用域查找。...无论是限定的还是非限定的),右侧名称查找必须是该枚举中的一个枚举器,否则程序是不正确的如果::左侧没有任何内容,查找只考虑在全局命名空间范围内的声明(或者通过using声明引入到全局命名空间的声明)。...然后对每个参数进行类型检查:对于函数调用表达式中的每个参数,会检查其类型以确定将添加到查找中的相关命名空间和类(具体不同类型对应的命名空间规则比较复杂,详见cppreference)接着关联集合:基于参数类型
全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。...static无论是全局的还是局部的,都存储在数据区中,其生命周期为整个程序,如果是静态局部变量,其作用域为一对{}内,如果是静态全局变量,其作用域为当前文件。...允许一个强符号和多个弱符号,但定义会选择强符号的。 当有多个弱符号相同时,链接器选择占用内存空间最大的那个。...使用尖括号引入的头文件在包含文件目录中去查找(包含目录是由用 户在设置环境时设置的),而不在源文件目录去查找。使用双引号则表示首先在当前的源文件目录中查找,若未找到才到所包含目录中去查找。...静态库实际上是一些目标文件的集合,用于连接器生成可执行文件阶段。连接器会将程序中使用到函数的代码从库文件中拷贝到应用程序中,一旦连接完成生成可执行文件之后,在执行程序的时候就不需要静态库了。
CA1050:在命名空间中声明类型 应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 CA1051:不要声明可见实例字段 字段的主要用途应是作为实现的详细信息。...应使用 sealed 修饰符标记不希望被继承的类型,以免将其用作基类型。 CA1053:静态容器类型不应具有构造函数 公共或嵌套公共类型只声明了静态成员,但具有公共或受保护的默认构造函数。...CA1700:不要命名“Reserved”枚举值 此规则假定当前不使用名称中包含“reserved”的枚举成员,而是将其作为一个占位符,以在将来的版本中重命名或移除它。...“Get”方法和属性的名称应能够明确区分其功能上的差异。 CA1724:类型名不应与命名空间冲突 类型名不应与 .NET 命名空间的名称匹配。 与该规则冲突将使库的可用性下降。...CA1810:以内联方式初始化引用类型的静态字段 当一个类型声明显式静态构造函数时,实时 (JIT) 编译器会向该类型的每个静态方法和实例构造函数中添加一项检查,以确保之前已调用该静态构造函数。
尽量少用静态类 1.5.2. 不要用作杂物箱 1.5.3. 不要声明或覆盖静态类中的实例成员 1.5.4. 静态类应该是密封的、抽象的,并且有一个私有的实例构造函数 1.6....使用更小的类型可能会节省很大空间 1.8.9. 要用复数名词或名词短语命名“标记枚举” 1.8.10. 不要扩充System.Enum 1.8.11....要在适当的时候从实例构造函数中抛出异常 就算在构造函数抛出异常,那么垃圾收集器还是会回收该对象,并且可能调用其Finalize方法。...要把静态构造函数声明为私有 2.3.10.2. 不要从静态构造函数中抛出异常 2.3.10.3....要用System.EventArgs或其子类作为事件处理函数的第二个参数的类型,并将其命名为e 2.4.9.4. 不要在事件处理函数中使用两个以上的参数 2.5. 字段的设计 2.5.1.
, 能在任何命名空间中使用, 因此最好写在外部作为提示并防止用到局部变量 noexcept 和 noexcept()指明某函数不能抛出异常(若抛出则直接terminate), 参数可以用bool值来决定是否允许抛出...初始化列表的效果总是慢于就地初始化, 但也快过在构造函数中进行赋值 注意: 非常量的静态变量依然要在头文件外定义从而保证在程序中只存在一个 sizeof()可以对类成员表达式使用了 类模板也可以声明友元了...不允许声明auto数组 新增的range-for语法要求目标有begin和end函数, 且支持++和==, 常与auto共用, 但要注意range-for中的auto是解引用后的对象而不是迭代器 decltype...(常量数值的别名), 从0开始, 且其成员在所在的范围内全局可见 enum关于在编译期被替换, 不占用代码的储存空间, 曾被用作TMP中的一种特殊常量声明, 称为enum hack 由于enum的全局可见性...enum也有了一样的指定功能 由于枚举类是强作用域的, 因此使用枚举类的成员必须要作用域操作符(::), 因此匿名枚举类没有什么意义, 除非用decltype重新指名
包含C语言的头文件是,常引用的是.h文件,而C+++标准为了语言区别开,也为了正确使用命名空间,规定头文件不再使用后缀 .h。...} 如果要在类外调用公用的静态成员函数,要用类名和域运算符“: ”,如: Box::volume(); 实际上也允许通过对象名调用静态成员函数,如: a.volume( ); 但这并不意味着此函数是属于对象...静态成员函数与非静态成员函数的根本区别是:非静态成员函数有 this 指针,而静态成员函数没有 this 指针,由此决定了静态成员函数不能访问本类中的非静态成员,在 C++ 程序中,静态成员函数主要用来访问静态数据成员...两个同名函数不在同一个类中,而是分别在:基类和派生类中,属于同名覆盖。若是重载函数,二者的参数个数和参数类型必须至少有一者不同,否则系统无法确定调用哪一个函数。...单例模式 通过类本身来管理其唯一实例,唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。
通过使用枚举,我们可以通过符号标识来比较各个成员,我们还可以对枚举本身进行迭代。...,缓存无所不在。...下面的代码定义了一个斐波拉契函数,由于该函数的运算需要多次递归,每次递归都会执行相同的工作,因此使用缓存能够加速它的计算。...在官方文档中,它们被称作 “具有默认值的可变命名元组” 。...然而在 Python 3 中,通过使用隐式命名空间包(Implicit Namespace Package:https://www.python.org/dev/peps/pep-0420/),这些文件就不再需要了
作用域 命名空间将全局作用域细分为独立的,具名的作用域,可有效防止全局作用域的命名冲突。另外,一般在命名空间的最后注释出命名空间的名字。 3. 类 类是 C++ 中代码的基本单元。...在构造函数中可以进行各种初始化操作。 仅当只有数据成员时使用 struct,其它一概使用 class。 接口是指满足特定条件的类,这些类以 Interface 为后缀 (不强制)。 4....double PI = 3.14159; 枚举(Enumeration)命名遵循类和常量的命名约定: enum Color { RED, GREEN, BLUE }; enum Direction {...函数是否分配了必须由调用者释放的空间。 参数是否可以为空指针。 是否存在函数使用上的性能隐患。 如果函数是可重入的, 其同步前提是什么? 通常变量名本身足以很好说明变量用途。...尽量不使用非 ASCII 字符,使用时必须使用UTF-8编码。 只使用空格,每次缩进2个空格。 倾向于不在圆括号内使用空格,关键字 if 和 else 另起一行。
: 1、创建函数库 2、使用Delegate和枚举类型 3、用格子展示2D函数 4、在3D空间定义表面 这是关于学习使用Unity的基础知识系列的第三个教程。...首先将一个用于函数数组的静态字段添加到FunctionLibrary。 ? 我们总是将相同的元素放在此数组中,因此我们可以在其声明中明确定义其内容。...2.3 枚举 整数滑块有效,但0表示波动函数等并不明显。如果我们有一个包含函数名称的下拉列表,将会更加清楚。可以使用枚举来实现。 可以通过定义枚举类型来创建枚举。...调整我们的函数委托类型以支持这种新方法。唯一需要做的更改是将其浮点返回类型替换为Vector3,但还要重命名其参数。 ? 现在,我们需要相应地调整函数方法。将U和V直接用于X和Z。...不需要调整参数名称-只需调整其名称即可匹配委托,但让我们保持一致。如果你的代码编辑器支持它,则可以通过菜单或上下文菜单选项快速重构-重命名参数和其他内容,以便在一次使用的所有位置将其重命名。
TypeScript—命名空间 15....ES6 中类的用法 属性和方法 使用 class 定义类,使用 constructor 定义构造函数。通过 new 生成新实例的时候,会自动调用构造函数。...Animal; } } 静态属性 可以使用 static 定义一个静态属性: class Animal { static num = 42; constructor() { /...TypeScript—命名空间 命名空间是为了避免变量命名冲突,TypeScript 官方将命名空间视为“内部模块”。 如果声明相同名称的命名空间,TypeScript 编译器会将其合并为一个声明。...使用 namespace 关键字来声明命名空间。TypeScript 的命名空间可以将代码包裹起来,只对外暴露这个命名空间对象,通过 export 关键字将命名空间内的变量挂载到命名空间对象上。
CA1027:用 FlagsAttribute 标记枚举 枚举是一种值类型,它定义一组相关的已命名常数。...如果可以按照有意义的方式组合一个枚举的已命名常数,则对该枚举应用 FlagsAttribute。 CA1028:枚举存储应为 Int32 枚举是一种值类型,它定义一组相关的已命名常数。...CA1050:在命名空间中声明类型 应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 CA1051:不要声明可见实例字段 字段的主要用途应是作为实现的详细信息。...应使用 sealed 修饰符标记不希望被继承的类型,以免将其用作基类型。 CA1053:静态容器类型不应具有构造函数 公共或嵌套公共类型只声明了静态成员,但具有公共或受保护的默认构造函数。...由于调用静态成员不需要类型的示例,因此没必要使用构造函数。 为安全起见,字符串重载应使用字符串自变量调用统一资源标识符 (URI) 重载。
2.1 命名 要把PascalCasing用于由多个单词构成的名字空间、类型以及成员的名字。 要把camelCasing用于参数的名字。 不要使用匈牙利命名法。...也就是说参数要用camelCasing,其它所有能让使用者看到的地方,包括命名空间、类名称、属性、函数等都要都要使用PascalCasing。...总的来说,框架中除了函数的参数外所有可见的部分都应该使用PascalCasing风格,因为资源通常可以以属性的方式被使用,所以资源的Key应该使用Pascal。...,但即使不特别提出来,参考.NET Framework中的枚举也能很好地遵守这些规范。...要用object作为事件处理函数的第一个参数的类型,并将其命名为sender。 要用System.EventArgs或其子类作为事件处理函数的第二个参数的类型,并将其命名为e。
在C++编程中,枚举类型是一种定义常量集合的方式,用于提升代码的可读性和维护性。...枚举值的隐式转换问题: 尽管enum class增强了类型安全,但直接的整数赋值或比较仍可能编译通过。...枚举类的迭代虽然标准库没有直接提供迭代枚举类的方法,但可以通过模板元编程或特化来实现。...正确使用enum class不仅可以避免命名冲突和类型混淆,还能使代码更加易于理解和维护。掌握其常见问题和易错点,结合高效使用技巧,能够帮助开发者编写出更高质量的C++代码。...在实际应用中,应根据具体需求灵活选择枚举成员的定义、底层类型以及使用场景,充分利用这一特性带来的优势。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!
领取专属 10元无门槛券
手把手带您无忧上云