C++程序设计 课堂笔记

本人主要针对自己C++知识的盲点进行选择性的学习,系统的学习请看具体的参考资料 https://www.bilibili.com/video/BV1Hx411U7xL?p=3

01 :函数指针

定义: 类型名( *指针变量名)(参数类型1, 参数类型2, …)*
例如:int (*pf)(int, char)
使用:函数指针名(实参表)
例如:pf = PrintMin; pf(x, y);
应用:C快速排序任意类型数组:qsort库函数
void qsort(void *base, int nelem, unsigned int width, int(* pfCompare)(const void *, const void *)
函数需要以下四个参数:
数组的起始地址:base
数组元素个数:nelem
数组元素大小:width
排序前后规则:int(* pfCompare)(a, b)
其中,返回值包含以下三种情况:
负整数:a在前,b在后;
0:哪个参数在前都可以;
正整数:a在后, b在前。

#include <strio.h>
#include <stdlib.h>

int MyCompare(const void * elem1, const void * elem2) 
{
    unsigned int * p1, * p2;
    p1 = (unsigned int *) elem1;    // "* elem1" 非法
    p2 = (unsigned int *) elem2;    // "* elem2" 非法
    return (*p1 % 10) - (*p2 % 10)
}

#define NUM 5


int main()
 {
    unsigned int an[NUM] = {8, 123, 11, 10, 4};
    qsort(an, NUM, sizeof(unsigned int), MyCompare);
    for(int i = 0; i < NUM; i++)
    {
        printf("%d", an[i])     // output: 10 11 123 4 8
    }
    return 0;
}

 

 02: 命令行参数

Linux 系统下是命令行参数运行程序;window也有命令行运行程序,同时按住Window+R, 并输入cmd,命令行出现如下:

命令行程序示例:

如果你的电脑里面有 notepad sample.txt 这个程序,你可以把它输入到命令行

然后会有程序里面对应的输出,这是用命令行的形式,也可以用C语言软件去编译

如何获得命令行参数 sample.txt ?

举例说明 !

其中argc = 6; 然后输出对应的字符串

 

03: 引用

引用后,如果引用变量改变,被引用的变量也会变,两个变量其实就是一个变量了

注意两者的区别 !,C  C++


 04: const 关键字和常量

要点:避免使用define, 因为const有类型方便检查。

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

错误1:不可通过常量指针修改其指向的内容;

错误2:strcpy()的第一个参数类型为char *,而pconst char *,不能将const char *类型的指针赋给char *类型

在这里插入图片描述

 

05: 动态内存分配

要点:

  1. C语言:通过malloc分配内存。C++:new关键字实现动态分配内存。
  2. 分配变量:P = new T;,其中T为任意类型名。
  3. 分配数组:P = new T[N]

目的:节省空间,实际需要多少空间就动态定义多少空间

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 

 06: 内联函数和重载函数

函数重载,便于记忆,c语言中是没有的,很好的存在! 调用时注意变量的类型

 

 07: 函数的缺省参数

在看程序的时候确实出现过这样的情况,但是不懂为什么,早看到这个视屏就好了

 

 08: 面向对象程序设计

结构化程序设计的弊端

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

面向对象程序设计
含义:类,相当于模板。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 

 

09: 面向对象语言发展历程

在这里插入图片描述

在这里插入图片描述

10: 从客观事物抽象出类的例子

  • 实例化对象
  • 类成员的访问:
  1. 对象名.成员名
  2. 指针->成员名
  3. 引用名.成员名

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 

 

11:  类成员的可访问范围

 

具体的例子

 

12:内联成员函数和重载成员函数

避免语义歧义

 

 

13:构造函数

 

14:复制构造函数

 

15:类型转换构造函数

 

16:析构函数

 

 

 

具体的例子

 

17:静态成员变量和静态成员函数

理解:CRectangle A, B;   

改变A.静态 值 也会改变 A.静态值

举例说明

 



 

18:成员变量和封闭类的概念

 

19:友元

友元函数

 

友元类:不能继承,不能传递

 

20:this  指针

 

 

21:常量对象,常量成员函数和常引用

 

22:运算符重载的基本概念

 

 

 

23:赋值运算符的重载

 

 

 

24:长度可变的整形数组类

 

25:流插入运算符和流提取运算符的重载

26:自增 自减运算符的重载

27:继承和派生

 

 

 

28:复合关系和继承关系

29:多态和析构函数的基本概念

30:使用多态的游戏程序实例

 

 

31:文件操作

 

32:函数模板

 

两个模板,函数类型的不同

T类型的

但是如果参数的类型不一样!

 

33:类模板

 

34:string类

 

35:输入和输出

 

36:1-标准模板库STL概述

具体的例子:

 

37:2-标准模板库STL概述

 

38:顺序容器Vedtor

39:List 和 Deque

 

40:函数对象

 

 

41:Set 和 multiset

 

 

42:Map 和 multimap

 

43:容器适配器

44:算法

 

45: 强制类型转换

 

 

 

感谢: https://blog.csdn.net/qipeng_master/article/details/88124357

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他人是一面镜子,保持谦虚的态度

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值