C++读书笔记
C与C++的不同点
- C++在struct,union中定义的函数叫成员函数,在class中定义的数据叫数据成员
- C++引入了三个存取权限的关键字:public,protected,private
public:表示数据成员或成员函数是公有的
protected:表示数据是受保护的。不允许其他的程序对其进行直接存取,只能通过他所在的成员函数进行存取
private:表示数据是私有的。与protected一样
成员访问控制 public protected private 类自身 yes yes yes 派生类 yes yes no 其他类 yes no no 基类成员访问控制 继承访问控制 在派生类中的访问控制 publilc public public protected protected private 不可访问 publilc protected protected protected protected private 不可访问 publilc private private protected private private 不可访问 注意:private与protected的区别:private的数据是不可被继承的;protected的数据是可以被继承的
- C++中可以把结构体名当做数据类型来使用
struct Student{char name[20];} Student stu;//定义Student类型的变量 - struct关键字定义的数据成员或数据函数缺省时是public;class关键字定义的数据成员或成员函数缺省是private。用union定义的类其所有的成员都是public,这种安排是不可以改变的,它不能使用存取限定符来进行修饰数据权限
- C++中定义参数可以带缺省参数。带缺省参数的函数调用时,如果缺省参数中没有给值,则将缺省值赋值给参数变量
//定义了缺省参数的函数 int fun(int x,int y,int z = 100);
注意:带有缺省值的参数必须放在参数列表的尾部
作用域限定符
代码:

C++继承
概念:如果B类是由A类继承而来的,那么把B类叫作派生类,A类叫作基类
单继承
单继承语法:
class 派生类名 : 继承方式{
//定义类实体
}
示例图:

多继承
多继承语法:
class 派生类名 : 继承方式1 基类名1,继承方式2 基类名2,...{
//定义类实体
};
示例图:

C++重载
重载运算符
概念:对已有的运算符进行重新定义其功能
| 可重载运算符 | 不可重载运算符 |
| 双目运算符(+,-,*,/,%) | .(成员访问运算符) |
| 关系运算符(==,!=,>,<,>=,<=) | .* , ->*(成员指针访问运算符) |
| 逻辑运算符(||,&&,!) | ::(域运算符) |
| 单目运算符(+(正),-(负),*,&) | sizeof |
| 自增(++),自减(--) | ?: |
| 位运算符(|,&,~,^,<<,>>) | #(预处理符号) |
| 赋值运算符(=,+=,-=,*=,/=,&=,|=,...) | |
| 空间申请与释放(new,delete,new[],delete[]) | |
| 其他运算符(()(函数调用),->(成员访问),,(逗号),[](下标)) |
示例图:
重载函数
概念:在一个类中定义多个相同名字的函数,但是参数列表或参数个数不相同的方法
示例图:

C++成员函数
成员函数的实现:在类定义的内部或外部实现函数。前者称为内联成员函数,后者称为外部成员函数
内部实现:
class A{
private:
int x;
int y;
public: //定义内联函数
int getX(){return x;}
int getY(){return y;}
}
外部实现:
class B{
protected:
int x;
public:
void setX(int x);
int getX();
}
//外部实现
void B::setX(int x){
this->x = x;
}
int B::getX(){
return this->x;
}
C++构造函数与析构函数
概念:构造函数是在建立对象时被调用的;析构函数是在删除对象前被调用的
内部定义:
外部定义:
示例图:

调用基(父)类函数
问题:如果想在派生类中使用基类中的函数(这里的函数是指与派生类的函数名相同,但是是功能不同的函数)我们该怎么做呢??
代码:
示例图:

派生类的构造函数实现及执行过程
代码:
示例图:

C++构造函数、析构函数与普通函数的区别
- 构造函数的名字必须与类名相同;析构函数的名字是以波浪号(~)开头加类名组成的。
- 当建立对象时或复制对象时,构造函数会被自动调用;当删除对象前,析构函数会被自动调用。
- 构造函数与构造函数都无返回值。
- 构造函数与析构函数都无法被继承,但是派生类可以调用基类的构造函数
- 构造函数允许重载,有自己的默认参数和初始化列表
- 构造函数不可以是虚函数;析构函数可以是虚函数
- 析构函数不接受任何参数,没有返回值,没有任何值要说明
C++动态对象
概念:在C++ 中提供了动态申请和释放内存空间的两个关键字,分别是new(申请),delete(释放)。
语法:
new 数据类型; delete 指针变量;
注意:new申请内存地址空间成功时,返回对象的指针;若申请失败,则返回空指针(NULL)
代码:
C++读书笔记的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- LOMA280保险原理读书笔记
LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记1
<3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...
- 《More Effective C#》读书笔记
<More Effective C#>这本书,大概是四年前看完的,但只整理了一部分读书笔记,后面有时间的话,会陆续补充的. More Effective C# :使用泛型 More Eff ...
随机推荐
- codeforce 382 div2 E —— 树状dp
题意:给一棵n个结点的无根树染色,求使每个结点距离为k的范围内至少有一个被染色的结点的总染色方法数目 分析:首先我们定义: 对于结点v, 如果存在一个黑色结点u距离v不超过k,则结点v被“控制” 首先 ...
- ZR并查集专题
ZR并查集专题 并查集,作为一个基础算法,对于初学者来说,下面的代码是维护连通性的利器 return fa[x] == x ? x : fa[x] = getf(fa[x]); 所以,但是这对并查集的 ...
- POJ2763 Housewife Wind 树链剖分 边权
POJ2763 Housewife Wind 树链剖分 边权 传送门:http://poj.org/problem?id=2763 题意: n个点的,n-1条边,有边权 修改单边边权 询问 输出 当前 ...
- Linux普通用户执行特定的命令配置
最近处理了一个二级CASE,驻场运维的初级工程师安装软件的时候执行了yum update,导致用户生产系统的glibc也升级了,使得用户的生产调度软件无法使用.研究了两三天,最靠谱的做法如下: Ste ...
- Android studio相关设置及实现存在于工程目录中的视频播放
一:相关设置 1:主题设置 File-->Settings-->Appearance &Behavior-->Appearance-->THeme 2:Java源码的颜 ...
- 前端——CSS选择器
目录 前端CSS CSS三种引入方式 CSS标签选择器 基本选择器 1.元素选择器 2.类选择器 3.id选择器 4.通用选择器 组合选择器 1.后代选择器 空格 2.儿子选择器 > 3.毗邻选 ...
- python字符串(str)
# value = "raitOrEi" # v = value.capitalize()#首字母大写 # print(v) # v1 = v.casefold()#全部变小写,不 ...
- SQL Server 中数据查询注意事项
1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...
- VC/c++版本获取现行时间戳精确到毫秒
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完 ...
- 清晰架构(Clean Architecture)的Go微服务: 日志管理
良好的日志记录可以提供丰富的日志数据,便于在调试时发现问题,从而大大提高编码效率. 记录器提供的自动化信息越多越好,日志信息也需要以简洁的方式呈现,便于找到重要的数据. 日志需求: 无需修改业务代码即 ...
