0
点赞
收藏
分享

微信扫一扫

杂乱的c++学习笔记

树下的老石头 2022-03-14 阅读 88
c++学习mfc
  1. c++中,对象就是程序设计语言中的对象
    面向对象——物件导向
    对象=属性+服务
    写程序=从问题空间到程序空间的映射
    在c++中,class就相当于c的structer,有一点不同
    首先调用与类同名的函数
    a.print():对象调用操作,“点”
    在c中,操作位于结构体外面,在c++中操作位于结构体内部,用对象自己调用那个操作

对象和类(Object & Class)
类定义了对象长什么样子;对象是一个类的实例
oop:
1)所有的东西都是对象
2)程序是一堆对象,这些对象以发送消息的方式告诉别人要做什么,这样的一堆对象合在 一起就是一个程序
c语言的源代码是一堆函数的集合;c++在程序运行时是一堆对象的相互作用(去做什么(命令)而不是怎么做(操作))
3)每一个对象有其自己的内存,这个内存由其他对象构成(对象里面有对象)
4)每个对象有一个类型(物以类聚人以群分,对于oop来说,先有类型才有对象)
5)一个特定类型的所有对象都能接收相同的消息
(所有的杯子都能实现装水的操作)
所有能够接收相同消息的对象可以被定义为同一个类型
(能装水的操作的 都是杯子)
2. 操作对应着对象的接口,对象都是以接口和外界交互
接口的好处
程序的耦合性希望是松散的(接口)
接口的作用:通信,交流,保护内部的东西

对程序来说:需要隐藏一些东西,保护内部的一些东西,只能通过接口做一些操作和交流,
程序员的分类:(1)定义类,(2)用别人写的类做其他的东西
定义类的一方:让别人无法访问到不想让别人访问的东西

oop的三个原则:封装,继承,多态性
封装:encapsulation,把数据和对这些数据的所有的操作合在一起,放在一个对象里面
继承:
多态性:

TicketMachine.h 文件中包含了类中的函数原型和类的声明
TicketMachine.cpp 文件中包含了.h的头文件,和声明的函数的实体
TicketMachine.cpp文件中描述的类的实体,是由TicketMachine.h所声明的,需要在.cpp文件中定义 在.h文件中声明的那些东西(公有函数)的实体
声明
定义
实体

头文件,在其他文件中的#include ""的操作,是做插入的过程(编译前的大的文件),然后去做编译

如果在一个头文件中声明了一个类,那么就必须在任何使用到这个类的地方·

在c++中,将类的定义分割为·h和·cpp文件,在·h文件(头文件)中进行类的定义和函数原型的声明;在.cpp文件中书写函数的body

如果在一个头文件里声明了一个函数或类,就必须在所有要用到它的地方以及唯一的定义它的地方(给出函数body的地方)都应该include这个头文件

编译的过程:.cpp --> .ii --> .s --> .o --> .out
由一个编译预处理指令 变为 .ii --> 由编译器 变为.s(分离式编译,编译时只看这一个文件,不会检查全局变量的定义是否重复) --> 由汇编器 变为 .o (此时汇编已经完成)–> ld: 连接器 需要把a.o 和 b.o 连接起来 加上一点东西,生成.out

一个cpp文件就是一个编译单元,当要编译程序时,编译器只对这一个cpp文件进行编译;对于头文件来说,只能在里面放声明,而不能在里面放定义,否则,当有多个cpp文件include同一个头文件时,会出现重名的全局变量

什么是声明:(与定义相区别)

  1. extern 的变量 是声明(变量的定义是没有extern关键字 只写 int x)
  2. 函数的原型 是声明 (函数如果后面有{}就叫定义,没有的就叫原型)
  3. 类和结构体的声明 是声明 (类和结构体没有定义的说法)

#include做的事情就是把include文件插入到.cpp文件中

两种include
1)#include “xx.h” 首先在当前的文件目录查找(写了#include文件的那个目录)
2)#include <xx.h> 不会在当前的目录下找,而是在一个系统的目录中找(编译器认定的头文件所在的目录)
3) #include 和第二种是一样的 (万物都文件)

#ifndef TICKETMACHINE_H_ //如果没有定义TICKETMACHINE_H_这个宏
#define TICKETMACHINE_H_ // 我们就定义这个宏,

#endif
如果已经定义了这个宏,中间的类就不会进行编译了,这是条件编译的内容
条件编译的内容被称作——标准头文件结构

.h里面放声明而不放定义,是为了避免多个.cpp include同一个头文件时,链接器(ld)遇到同一个定义的东西。在.h文件中加入标准头文件结构(条件编译)是为了防止在同一个.cpp文件里面include同一个.h文件多次,而导致类的声明重复出现

所以:建议:
在每一个头文件只放一个类的声明,在它的源代码文件,用标准头文件结构围绕起来,所以include的文件中,只能有声明,而不能有定义(头文件里面只能有declaration 而不能有defination)

抽象的能力——Abstraction is the ability to ignore details of parts to focus attention on a higher level of a problem.

举报

相关推荐

C转C++的学习笔记

C++学习笔记

学习笔记-C++

【C++学习笔记】

【c++学习笔记】

我的C++学习笔记

0 条评论