C++基础知识了解&学习

C++学习笔记

1. 创建自己的类

class student{
public:
string name;
private: #主函数外部看不到
int age;
}

2. 成员函数的重载

不同函数可以有相同的函数名,通过不同的输入参数来识别

3.构造函数

如果有构造函数,创建的对象就有默认值
构造函数的本质即对象初始化
构造函数自动赋值
带参数的构造函数,相当于python中的init初始化参数函数。
带参构造

4. 析构函数

当类的对象创建后,其数据就一直在内存之中,内存的释放需要调用析构函数。
只有 对象类 *p = new 对象类名()
delete p才将自动调用析构函数
写法:()
在这里插入图片描述

5. 常成员函数const

一个方法只读取去属性 不修改属性 就是常成员函数
写法:
在这里插入图片描述

6. 静态成员static

一个类可以创建多个对象,需要一个变量来指示程序已经创建多少个对象时,则用到静态变量这个定义,其中该变量与类有关,但又不属于构建对象的任何一个,这种描述全局,由于某个对象属性无关的,叫做静态成员数据,读取静态成员数据的方法,叫静态成员函数。(依赖于类,不依赖某个对象)

写法:
在这里插入图片描述
使用方法和对比:
在这里插入图片描述

7. private和public

目的:对类的外部隐藏了类内部工作机制,即封装性
public的内容可以在主函数砍刀,private的内容只能在类的内部看到
例子展示:
在这里插入图片描述
private使用方法:通过公有方法的外壳调用私有方法
例子:
在这里插入图片描述
正规写法:
在这里插入图片描述

8. 类的派生继承

student类, 细分成本科生和研究生
本科生和研究生是学生的子类,学生是父类也叫基类或者超类
派生,是相对于父类而言,继承相对于子类而言
在这里插入图片描述
在这里插入图片描述
对比研究生本科生两个类:
都没有写父类基本的属性和方法,除了公有的属性和方法,也有自己的特性,即派生特性,除了继承来的属性和方法外,子类还可以拥有自己派生的属性和方法。

问题:子类没有构造函数,他的对象怎么被创建呢?父类的属性是否有值?
在这里插入图片描述
类在不同情况下的继承:
在这里插入图片描述
总结:当表示公有继承时,子类智能继承父类的公有部分和保护部分,私有部分一概无法继承,因此需要把父类的private修改为protect,才可以让子类继承父类的私有部分,如下所示:
在这里插入图片描述
关键字该为私有继承和保护继承时,即public关键字替换为private或者priotect,私有继承仍然不能继承父类的私有部分,智能继承保护部分,且子类内容将吧父类继承的部分也修改为private类型,同理保护继承也是如此。如下所示:
在这里插入图片描述

9.子类的构造函数

子类可以有自己的构造函数,当子类没有构造函数时,系统会调用父类的构造函数。但是,无论子类有没有自己的构造函数,创建子类对象时,父类构造行数都将被调用。
不带参数的子类构造函数:
在这里插入图片描述
带参数的子类构造函数:
在这里插入图片描述
需要考虑父类的构造函数,先调用父类的构造函数,给父类传两个指定参数,随后把子类定义的参数进行初始化赋值。

10.多态的初步

方法真的是专属于某个类么?
如加法是专属于整数类的,两个字符数相加必然会出错,但python中两个字符串相加是相连接的。
多态的思想:不同类的对象也可以用相同的方法,相同值方法名字,而方法里面的内容具体干了什么,是不一样的。
C++要实现相同函数名执行不同的内容,方法有:
重载、隐藏、覆盖(重写)
区别:
在这里插入图片描述
隐藏:父类和子类定义同名函数,输入参数格式形同不同都可以,用的较少。
在这里插入图片描述
类的指针:不考虑继承,类指针与结构体指针类似
在这里插入图片描述
在这里插入图片描述
多态与虚函数:
父类和子类建立同名函数,但是父类声明前面加上关键字virtual,表明这是一个虚函数。
在这里插入图片描述
在这里插入图片描述
多态的核心:在程序开始时候设置一个父类指针,之后这个指针可以动态指向不同的类,兵器儿科一动态调用不同类方法,从而实现不同数据类使用相同的方法。
重载是编译是决定的,多态是运行时决定的。
运行时系统会吧所有的虚函数放入同一张表,最后根据指针指向的对象做调用。

11.纯虚函数与抽象类

在这里插入图片描述
纯虚函数表明这个函数只有声明,没有定义,其具体的内容靠子类的多态实现。抽象类可以创建student的一个指针但不能创建student对象了
在这里插入图片描述
抽象类的虚函数要由子类实现。

在这里插入图片描述

12.C++和python

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值