《C++ Primer》读书笔记-第二章 07 自定义数据结构

来源:互联网 发布:js插件怎么写 编辑:程序博客网 时间:2024/05/11 18:17
作者:马志峰
链接:https://zhuanlan.zhihu.com/p/23436243
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

这一节的内容相对来说比较少。

主要为后面学习类做准备。

数据结构

是一种把一组相关的数据组织起来然后使用它们的策略和方法,也可以说是一种抽象表达。

比如我们正在看的这本书《C++ primer》有ISBN号,作者,价格三个特征。
我们可以定义下面的数据结构:

struct Primer  {      std::string sBookNo;      std::string sAuthor;      double dRevenue;  };

自定义数据结构以关键字struct开始,紧跟着类名和实体,最后的分号不能省略

还有一种自定义结构以class作为关键字,也就是常说的类。以后会经常遇到。

我的理解

自定义数据结构是自然事物的抽象表达,比如我们可以定义一个数据结构用来表示人

当我们关注人的姓名、身高、体重时,数据结构可以这样定义

struct Person  {      std::string sName;      double dHeight;      double dWeight;  };

当我们关注人的姓名、年龄、身份证号时,数据结构可以这样定义

struct Person  {      std::string sName;      unsigned iAge;      std::string sID;  };

有没有觉得程序员也是神一样的存在,可以在代码的世界里扮演造物者的角色

数据成员

  • 数据成员定义了类的对象的具体内容
  • 每个对象有自己的一份数据成员拷贝
  • 修改一个对象的数据成员,不影响其他对象

头文件

头文件通常包含那些只能被定义一次的实体,如类、const变量和constexpr变量等

头文件存在多次包含的情况(直接和间接),编译器会把头文件中的内容拷贝到包含文件中,而我们又要确保头文件中的内容不被多次定义。

这需要用到头文件保护符

//SalesData.h#ifndef SALES_DATA_H  #define SALES_DATA_H  #include <string>  struct Sales_data  {  };  #endif

预处理器在这里发挥了很大的作用。

#ifndef是“如果没有定义”的意思
SALES_DATA_H是“预处理变量”

  1. 如果没有定义SALES_DATA_H
  2. 定义SALES_DATA_H
  3. 执行下面的代码直到endif

如果SALES_DATA_H已经定义过,则后面的代码不会执行。

这样确保头文件被多次包含时,其中的内容不会被多次定义

#include也是预处理命令,当预处理器看到#include时就会用指定的头文件中的内容代替#include

小结

到这里第二章就学完了
相信再遇到指针和引用我们不会恐慌了
即便再加上const限定符
我们也应该能应付的来才是

多做一些练习吧
这一章值得这么做
如果你有困难
把书再看一遍

再看一遍…

0 0