C++ Primer:2.6 自定义数据结构

其他章节:C++ Primer 学习心得

类以关键字struct开始,紧跟着类名和类体(类体部分可以为空)。类体有花括号包围形成了一个新的作用域。内内部定义的名字必须唯一,可以与类外部定义的名字重复。

  • 类体右侧表示结束的花括号后必须写一个分号。

类数据成员

  • 为数据成员提供一个类内初始值,没有初始值的成员将被默认初始化。
  • 类内初始值的限制:放在花括号内或放在等号右边,不能使用圆括号。

编写头文件

类一般不定义在函数体中,在各个指定的源文件中可能只有一处该类的定义。如果在不同文件中使用一个类,类的定义就必须保持一致。
为确保各个文件类的定义一致,类通常定义在头文件中,而且类所在头文件的名字应与类的名字一样。

  • 头文件通常包含那些只能被定义一次的实体,如类、constconstexpr变量,也经常用到其他头文件的功能。

预处理器概述

确保头文件多次包含仍能安全工作的常用技术是预处理器,预处理器是在编译之前执行的一段程序,部分地改变我们所写的程序。
C++还会用到一项预处理功能是头文件保护符,依赖于预处理变量。预处理变量有两种状态:已定义和未定义。

  • #define指令把一个名字设定为预处理变量
    分别检查某个指定的预处理变量是否已经定义:
  • #ifdef当且仅当变量已定义时为真
  • #ifndef当且仅当变量未定义时为真。
    一旦检查结果为真,则执行后续操作直至遇到#endif指令为止。

预处理变量无视C++语言中关于作用域的规则。


整个程序中的预处理变量包括头文件保护符必须唯一,通常的做法是基于头文件中类的名字来构建保护符的名字,以确保其唯一性。为了避免与程序中的其他实体发生名字冲突,一般把预处理变量的名字全部大写。

相关推荐

  1. c++定义数据结构适配std::sort

    2024-07-18 04:34:03       31 阅读
  2. C++ Primer:2.6 定义数据结构

    2024-07-18 04:34:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 04:34:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 04:34:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 04:34:03       57 阅读
  4. Python语言-面向对象

    2024-07-18 04:34:03       68 阅读

热门阅读

  1. 【Docker】镜像构建和容器部署

    2024-07-18 04:34:03       21 阅读
  2. 力扣刷题(自用)

    2024-07-18 04:34:03       25 阅读
  3. 无需安装jadx-gui,获取app公钥和MD5

    2024-07-18 04:34:03       22 阅读
  4. elasticsearch源码分析-05分片分配

    2024-07-18 04:34:03       16 阅读
  5. 营销策划方案怎么写?

    2024-07-18 04:34:03       20 阅读
  6. 中国高端水果元宇宙

    2024-07-18 04:34:03       18 阅读
  7. 牛客多校暑期第一场

    2024-07-18 04:34:03       17 阅读
  8. 记一次Mysql连接失败的处理过程

    2024-07-18 04:34:03       28 阅读
  9. 从入门到高手的99个python案例

    2024-07-18 04:34:03       18 阅读
  10. Springboot Excel 导出工具 -- EasyPoi 简介

    2024-07-18 04:34:03       22 阅读