首页 > C/C++ > 侯捷-C++面向对象程序设计-学习笔记-02-头文件与类的声明

侯捷-C++面向对象程序设计-学习笔记-02-头文件与类的声明

2020年8月10日
分类: C/C++ 标签: ,

1,complex类和string类

  • complex含有两个成员变量:实部和虚部。complex定义了加减乘除等成员函数。
  • string含有一个指针,指向字符串的地址。
    • 【为什么要定义这个指针?因为我们通过string来定义的字符串长度是不固定的,用来存储字符的空间就得动态分配】

2,c和c++对比之数据和函数

  • c中,数据和函数是分离的,我们需要先定义一些数据,然后将其传入函数中进行处理。
  • c++中,数据和使用它的函数打包(或绑定)在一起(称之为封装),形成新的数据类型。我们可以通过这个新的数据类型来定义数据,并在这些数据上调用绑定的函数来处理数据。
    • 【封装的好处是,给定一个指定类型的数据,我们就知道其上面定义了哪些操作,并且只能执行这些定义好的操作,就像内置数据类型一样】

3,c++类可以实例化多个对象,这些对象拥有独立的数据,但它们使用的函数只有一份。

函数是如何知道当前操作的是哪个对象的数据呢?答案是:this指针。

类的函数的第一个参数为隐式声明的this指针,它指向了当前的调用对象。每个对象调用类的成员函数时,都会将自身地址传通过this递给成员函数。这个过程是编译器自动实现的。

4,c++中创建对象的方法有两种:在栈上创建、通过new在堆中创建

5,c和c++标准输出对比

  • c通过printf库函数执行标准输出,需要显式指明每个变量的输出格式
  • c++通过<<运算符执行标准输出,会根据变量的类型自动设置输出格式

6,c++代码基本结构

  • 头文件:.h,类的声明。用户定义的头文件通过引号(””)引用
  • 实现文件:.cpp,类的实现。cpp文件中include头文件
  • 标准库头文件:.h,提供标准库的功能。通过尖括号(<>)引用
    • 【安装编译器时已经将标准库的头文件和库文件放置在系统中】

7,头文件的标准写法

#ifndef __MODULE__
#define __MODULE__

/*
*declaration of class
*/

#endif

【这种写法称为“防卫式声明”,可避免多次include同一头文件时编译器产生“类型重复声明”错误。】

8,头文件的布局

一般而言,头文件中各种变量、类型、函数等的放置顺序依次为:

  • 前置声明:
    • 【类在声明之前被使用,可先简单进行声明:class ClassA;】
  • 类的声明
  • 类的定义:
    • 【通常只是内联函数的定义】

9,类的声明

  • 类的声明包含两部分:class head和class body
    • 【之前没有见过这种说法,细想一下,这或许是为了和函数的声明进行统一】
    • 【class head由关键字class、类名称和类的继承关系组成】
    • 【class body就是类的具体内容,包含哪些变量和函数】
  • 声明中需要明确类包含哪些成员变量和成员函数,以及这些成员的可见性(public、protected、private)

10,类模板

【成员类型的参数化,泛型编程】

 

————————-笔记分割线——————–

【侯捷老师推荐的书籍】

您可能需要这些【参考资料】:
零一积流|IT参考 原创文章,转载请注明出处: http://www.it-refer.com/2020/08/10/houjie-cplusplus-object-oriented-programming-02-header-file-class-declaration


本文的评论功能被关闭了.