【浙江大学 C++ 翁恺老师】学习笔记P10-P20

浙江大学 C++ 翁恺老师 B站视频链接

10 对象初始化

C语言可以在函数的任意位置定义变量(不一定放在函数的最前面),但要求在第一次使用之前。

空间在进入函数大括号时分配,而构造器在运行到定义行时才被调用。

default constructor:自己写的没有参数的构造函数。

11 new&delete

new:分配空间得到地址+调用构造函数

delete:调用析构函数+通过地址释放空间

请添加图片描述

new创建数组则要使用delete[](否则释放了所有空间,但只调用了一次析构函数)。

在这里插入图片描述

12 访问限制

  • public:公开的,任何函数都可以访问。
  • private:私有的,只有类的成员函数可以访问。
    同一个类的实例化对象之间可以互相访问私有成员。

如下:set()、f()和g()是类的成员函数,而main()不是。

在这里插入图片描述

friend:在X类中声明Y是X的朋友,则Y可以访问X的私有成员。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywWjjspX-1682077762519)(images/6ScdC3ckQNM8WvNadpCdqt9CABhQ71oMCzUx6JcOGq0.png)]

  • protect:只有类自己和其子类可以访问。

struct和class在C++中的区别:

不限制访问属性时,struct默认是public,而class默认是private

13 初始化列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zK4RcOMd-1682077762520)(images/KPwycTIAk4olDBesDN1RnWzG2Y9ikyvrYmD3V5kqKC4.png)]

14 对象组合

软件重用的一种方式。

Composition:声明类时,其成员变量可以是另外一个类对象

包含的方式:

  • Fully:整个置于类内。
  • By reference:通过地址访问。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z38izwsb-1682077762521)(images/I8KDQZcpt6T5prvZSDK2YXAmSWr7PEmfjMZtxeK6KHE.png)]

15 继承

软件重用的一种方式。

Inheritance:用一个已有类来定义一个新类的手段。

如下:已有Person类,Student类继承了Person类。所以Person是Student的父类,Student是Person的子类(超集)。

举例:
在这里插入图片描述

16 父类子类的关系

当构造子类对象时,会调用父类的构造函数

若父类的构造函数有参数,子类需写自身的构造函数,并通过initialize list传入参数

构造时先调用父类构造函数,再调用子类构造函数。

析构时先调用子类析构函数,再调用父类析构函数。

当子类和父类函数同名时,它俩没有关系。

17 函数重载和默认参数(缺省参数值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RIITddhj-1682077762526)(images/j3fXUwu_HP_KRuWt_eFf0TahZSM9LZAAiKR0uCfHgsQ.png)]

返回类型不能作为重载的条件。

若不能找到参数类型完全匹配的重载函数,则报错。
/

Default argument:在声明函数时预先给一个值作为默认值(缺省参数值)。

声明时,只能在.h中声明默认值,而.cpp仍与原函数相同。

在调用函数时,可以从最右边开始省略

如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xahLDgm-1682077762527)(images/qO2lxY64MzPiDOY9e8CnZ2xZkaIXPkzrvYPcGNdeJyQ.png)]

18 内联函数

当调用一个函数时,共分为四步:

  1. 参数压入堆栈中
  2. 返回地址压入堆栈中
  3. 准备返回值,放在ax寄存器中
  4. 将1,2步中压入栈元素弹出

Inline Funtions:当调用一个函数时,不执行以上步骤,而是将函数内容直接嵌入调用位置

声明时,在.h和.cpp中都必须写明是inline函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Ha6lsyo-1682077762529)(images/tvJ8jfW7YVtofufG4pY-4KG67kHLc050bqBwmMBEmuU.png)]

空间换时间策略

内联可以让编译器做类型检查等工作,比用宏更安全一些。

声明时就给出成员函数的函数体,则默认其为内联函数。简单函数可直接写为内联函数,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0jXfYGJq-1682077762530)(images/IxNkHM4Pwl2JrM6lQcQMtLYyiF9JzRxiCkuXEBThSTA.png)]

什么时候建议内联:

  1. 简单函数,仅两三行。
  2. 频繁调用的函数,如循环。

什么时候不可以内联:

  1. 非常大的函数,超过20行。
  2. 递归函数。

19 Const

const:变量初始化后不能再被修改。但其仍是变量而不是常数。

传递一个完整的对象会产生很多花费,最好通过指针进行地址传递。但是程序员可能在使用时修改原始值,所以安全起见应该将其设为const常量。

区分:

*const对象是const:指向的地址可以修改,地址里的内容不能修改。

const*指针是const:地址里的内容可以修改,指向的地址不能修改。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wW18VhsE-1682077762532)(images/eo5qTEfR1xFGR04lYIeHk5eJYNLgFH_4Ydprl1TWP-o.png)]

20 不可修饰的对象

函数后加上const:保证函数的成员变量不被修改。

使用时在声明和定义中都要说明。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRsZrPRz-1682077762533)(images/s9njN1PP_zbBE7SzoA5cNqGttKTbwVeSPWefNYhNFrI.png)]

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
浙江大学翁恺C语言课件是浙江大学计算机学院教授翁恺编写的一套C语言课程教材。这套课件主要用于C语言的教学与学习,内容包括基本语法、数据类型、运算符、流程控制、函数、指针、数组、字符串等C语言的基础知识。 这套课件具有以下几个特点。首先,它简单易懂,适合初学者学习翁恺老师针对C语言的特点和学习难点,将知识点进行了简洁明了的讲解,同时结合了大量的示例和练习,帮助学生更好地理解和掌握C语言的编程思路和技巧。 其次,课件内容丰富全面。翁恺老师在编写课件时,充分考虑到C语言的广泛应用领域和学生的学习需求,涵盖了C语言的各个方面,包括基础语法、程序设计、算法、数据结构等内容,帮助学生建立正确的编程思维和解决实际问题的能力。 再次,课件设计灵活多样。为了培养学生的动手实践能力,课件中设计了丰富的编程实例和实践项目,学生可以边学边练,不断巩固和提高自己的编程能力。此外,课件中还包含了一些扩展知识,如文件操作、动态内存管理等,有助于学生进一步拓宽视野。 总之,浙江大学翁恺C语言课件是一套权威且实用的C语言学习资料,通过学习这套课件,学生可以系统地学习和掌握C语言的基础知识,提高编程能力,并为日后的学习和工作打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值