嵌入式8月第四周学习总结

本周学习内容:C++

C++ 与C的区别:

C++是C的增强:C++具有严格的数据类型检查,新增了命名空间(名字空间),新增了异常处理,新增了面向对象编程,新增了变量的权限,新增了变量的引用,新增了函数重载及运算符重载

C++ 中的特性及专业术语:

(1)类:class
(2)对象
(3)继承
(4)多态
(5)封装
(6)组合(聚合)
(7)静态联编(静态绑定)
(8)动态绑定(动态联编)
(9)特征&属性
(10)行为&方法
C:面向过程
    将现实世界中的问题的解决步骤流程按照函数一步一步的进行实现
缺点:不易维护
C++:面向对象编程
    一切皆对象,将现实世界中的事物抽象成对象,用对象去处理相应的实际的问题
优点:易维护,出现问题能精确定位到

C++文件名及扩展结构
        C++程序的文件后缀:windows(.cpp),linux(.cpp、.cxx、.cc)

        (1)main主程序文件(main.cpp)
                    文件里包含了main函数,程序的运行就是main函数开始一直到main函数结束
        (2)源文件
                    源文件的后缀.cpp
                包括的内容:
                    变量的初始化、函数的定义、类成员函数的实现等等
        (3)头文件
                    头文件的后缀.h
                包括的内容:
                    函数的声明、文件的版权的声明、类的定义等等

动态内存:C++使用: new:用于开辟堆区空间,相当于是C里的malloc ,delete:用于释放堆区空间,相当于是C里的free

类和对象

类(class)
    描述现实世界中的事物,用C++进行编程的时候,通常是将现实世界中的事物用类来进行描述,类的关键字:class,描述一个人,特征:姓名、年龄、性别、肤色等等,行为:吃饭、睡觉、走路、跑步等等,类是一个泛指(抽象)的概念,不是特指某一个事物,简单的理解为没有实实在在存在于现实世界中(只是你脑海里一个概念)

对象
    对象是类的实例化(特指实际的例子),是特指的概念,例如:人(泛指的概念)-----对人进行实例化------张三(特指的概念)

类的成员访问修饰符

        public(公共)

        private(私有)

        protected(受保护)

构造函数

        构造函数是一种特殊的函数,它实质还是称为函数,如果用户没有显示的书写构造函数,那么编译器会帮用户自动的生成了一个默认的构造函数,反之,那么编译器就不会自动生成默认的构造函数
作用:就是为了初始化类的成员变量

析构函数

        C++里的析构函数也是一种特殊的函数,它实质也是函数,如果用户没有显示的书写析构函数,那么编译器会自动帮用户生成一个默认的隐藏的析构函数,反之,那么编译器就不会帮用户生成一个析构函数。
作用:释放空间

拷贝构造函数

        拷贝------copy,如果用户需要用一个对象去初始化另外一个对象的时候,就会用到拷贝构造函数,其实质就是一个构造函数,如果用户没有显示的将拷贝构造函数写出来,那么编译器会自动的生成一个默认的隐藏的拷贝构造函数,反之,编译器就不会帮用户生成一个拷贝构造函数

this指针

它是一种特殊的指针,它是存在于类的普通成员函数里(非静态成员函数),C++提供this指针的目的是为了解决二义性问题,并且它是隐式的指针,它是指向当前类。

static

        用static声明函数或者是变量为静态的,作用跟C里讲的static作用一样

const

1、const修饰成员变量

        作用跟C类似,有区别的是在类里声明的const成员变量可以不用声明的时候进行初始化,如果没有进行初始化就必须在构造函数的初始化列表中进行初始化的工作

2、const修饰的成员函数

        作用:用const修饰的成员函数中不能去更改类的成员变量的值(即const修饰的成员函数里对类的成员变量是一个只读的行为)

友元

        目的:给类的外部提供一个访问类的私有成员的接口
        关键字:friend,用关键字来声明友元函数和友元类

友元函数

        C++提供了友元函数就可以通过友元函数访问到类的私有成员,C++规定是友元函数声明在类里,就表示该函数是该类的友元,那么就可以通过友元函数访问类的私有成员,友元函数的定义放置在类的外部。

友元类

        C++提供了友元类就可以通过友元类访问类的私有成员,C++规定是友元类声明在一个其他类里,就表示该友元类是其他类的友元,那么就可以通过友元类访问其他类的私有成员,友元类的定义放置在其他类的外部。

运算符重载

重载、重写、隐藏(覆盖)

重载
    一般是发生在函数中,C++也支持运算符重载
解释:
    C++里的函数名相同、函数的参数个数、类型、顺序不同,可以发生重载(函数重载)

重写:
    就是将原来函数重新复制一份(函数的返回值、函数名、参数个数、类型、顺序都相同)

隐藏(覆盖):
    就是将原来函数(变量)重新复制一份,就将原来的函数(变量)覆盖(隐藏),隐藏一般用的最多的是具有继承关系的两个类中

运算符重载

C++里对基本的运算符重新赋予新的运算,例如,以前的加法(+)只能用于两个基本类型的数据进行相加,但是对于非基本类型的数据就不适用。C++对基本的运算符进行重载,重载之后就可以用于非基本类型的数据的运算。
    在类中运算符重载实际上是给类定义运算(类的对象能进行基本运算符的运算操作),强制修饰为函数的调用

注意事项:
A、除成员访问运算符“.”、成员指针运算符“.*”和“->*”、作用域运算符“::”、sizeof运算符和三目运算符“?:”、预处理符号“#”以外,C++中的所有运算符都可 以重载(其中“=”和“&”不必用户重载)
B、重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符
C、运算符重载的实质是函数重载,遵循函数重载的选择原则
D、重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构
E、运算符重载不能改变该运算符用于内部类型对象的含义
F、运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符
G、重载运算符的函数不能有默认的参数,否则就改变了运算符的参数个数
H、重载的运算符只能是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型的运算符的规则
I、运算符重载可以通过成员函数的形式,也可是通过友元函数,还可以是非成员函数的形式。

关键字:operator

继承与多态

继承

        一个类的对象共享了另一个类或其他多个类的成员变量和成员方法(子类还可以自己扩充自己的特征和行为),例如:儿子继承父亲(儿子具备父亲的特征和行为),该类和另一个类或其他类的关系,称之为“继承”,C++继承又分为单继承和多继承。
单继承: 一个类的对象共享了另一个类的成员变量和成员方法
多继承: 一个类的对象共享了其他多个类的成员变量和成员方法

继承的权限

        C++提供了继承的权限:public、private、protected,目的是对继承加以限制
public继承:
(1)父类的public下的成员就全部继承到子类的public属性下
(2)父类的protected下的成员变量是继承到子类的protected属性下,父类的protected下的成员函数没有继承到子类
(3)父类的private下的成员是没有继承到子类的private属性下
protected继承:
(1)父类的public下的成员就全部继承到子类的protected属性下
(2)父类的protected属性下的成员全部继承到子类的protected属性下
(3)父类的private下的成员是没有继承到子类的private属性下
private继承:
(1)父类的public下的成员就全部继承到子类的private属性下
(2)父类的protected属性下的成员全部继承到子类的private属性下
(3)父类的private下的成员是没有继承到子类的private属性下

多态

        按照字面的意思:多种形态(多种方法),C++里一般称为“一种接口,多种方法”,一种接口,指的是父类接口,多种方法表示父类中有方法并且子类中也有相同的方法(方法相同,实现的内容不同)
构成多态性:
(1)两个类具有继承关系
(2)子类中必须重写父类的方法(子类方法中的内容与父类中的方法可以不一样)
(3)父类中的方法必须是虚函数

虚函数
    虚函数相当于是一个普通的成员函数,只不过在该函数前加了一个关键字“virtual”,那就表明该函数是一个虚函数
声明格式:
    virtual  返回值类型  函数名 (参数列表);
定义格式:
    virtual  返回值类型  函数名 (参数列表);

抽象类

        java里声明抽象类关键字obstract,现实世界中有些事物是不能实例化对象的,我们将这些事物声明为抽象类,例如:鬼、外星人,抽象类只是给子类提供一个基类,在基类里只是对事物的一些描述,而没有具体的实现。

虚析构函数

(1)是将父类的析构函数声明虚析构函数
(2)两个类需要有继承关系
(3)基类指针指向子类的对象

异常

异常处理:

抛出异常throw
查找异常try
处理异常catch

异常使用的注意事项
(1)如果确定异常已经产生,但是用户没有去写捕获该异常的catch,那么程序的外层继续捕获该异常,如果还是没有捕获到,那么最后就调用windows的terminate来终止程序
(2)try模块后面必须紧跟着一个catch块或者是多个catch块
(3)产生的异常首先是匹配try后紧跟着的第一个catch块,如果没有匹配,继续往下一个catch进行匹配,如果还是没有捕获到,那么最后就调用windows的terminate来终止程序
(4)catch(...)它是用于捕获所有异常
(5)try...catch块可以发生嵌套

模板

函数模板

关键字:template

注意:
        模板的形参是用关键字typename/class

类模板

智能指针

        智能指针就是管理裸指针开辟的堆空间,换句话说就是将裸指针开辟的堆空间的管理权交给智能指针管理。智能:自动释放管理的堆空间,智能指针其实质是C++提供的一个类,具备裸指针的特性(->, .,*),C++提供了4种智能指针:auto_ptr(自动管理)、shared_ptr(共享指针)、weak_ptr(弱指针)、unique_ptr(唯一指针)

个人学习总结:

        相比于上一周的网络编程来说本周的学习内容较为简单,都是一些基础内容学习,不像上周一样各种问题很难解决。本周更多的是对于知识的掌握,记的多少。所以本周较为轻松,期待下一周的QT吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值