MFC视频教程(孙鑫)学习笔记2-掌握C++

2023-11-05

这一集中,主要总结了C++经典语法与应用。

1. C++的三大特性:封装、继承、多态。

2. C++中提供了一套输入输出流类的对象,它们是cin 、cout和cerr,对应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入操作,cout、cerr与<<一起完成输出与标准错误输出。利用cin和cout比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输出数据类型而自动调整输入输出格式,不必像scanf和printf那样一个个由用户指定。使用cin,cout不仅方便,而且减少了出错的可能性。对于输出来说,我们像以上方式调用就可以了,对于输入来说,我们以如下方式调用即可:
int i;
cin>>i;

注意箭头的方向。在输出中我们还使用endl(end of line),表示换行,注意最后一个是字符‘l’,而不是数字1,endl相当于C语言的'\n',表示输出一个换行。 

3.  C++中结构中可以包含函数,与类区别是它默认为public。 在C语言中,结构不能包含函数。

4.  构造函数:

C++构造函数,每个类必须包含构造函数,构造函数的作用是创建对象本身,分配内存。没有构造函数,就不能创建对象

C++又规定,如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数(由C++编译器提供),这个默认的构造函数是一个不带参数的构造函数,它只负责创建对象,而不做任何的初始化工作。 
只要一个类定义了一个构造函数,不管这个构造函数是否是带参数的构造函数,C++就不再提供默认的构造函数。也就是说,如果为一个类定义了一个带参数的构造函数,还想要无参数的构造函数,则必须自己定义。 
(与C#一样的)

5. 析构函数:

当一个对象生命周期结束时,其所占有的内存空间就要被回收,这个工作就由析构函数来完成。 

析构函数是“反向”的构造函数,析构函数不允许有返回值,更重要的是析构函数不允许带参数,并且一个类中只能有一个析构函数。 

析构函数的作用正好与构造函数相反,对象超出其作用范围,对应的内存空间被系统收回或被程序用delete删除时,析构函数被调用。

  根据析构函数的这种特点,我们可以在构造函数中初始化对象的某些成员变量,给其分配内存空间(堆内存),在析构函数中释放对象运行期间所申请的资源。 

6. 函数重载:

   重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载。 (在C#中又称函数签名)


7.  this指针

this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址this = &classname

一个类所有的对象调用的成员函数都是同一代码段。那么成员函数又是怎么识别属于同一对象的数据成员呢?原来,在对象调用pt.output(10,10)时,成员函数除了接受2个实参外,还接受到了一个对象s的地址。这个地址被一个隐含的形参this指针所获取,它等同于执行this=&pt。所有对数据成员的访问都隐含地被加上前缀this->。例如:x=0; 等价于 this->x=0。 


8. 类的继承
继承的权限,public,protected,private。构造函数的初始化,需要继承父类的构造函数


9. 函数的覆盖
函数的覆盖是发生在父类与子类之间,函数的重载是发生在类内部


10. C++的虚函数,
纯虚函数,子类必须实现的函数
virtual void breathe = 0;


11. C++的引用与指针的区别
int a = 6;
int &b = a;
引用和指针变量的内存模型
引用不需要占用内存,指针变量本身占用内存,存放变量地址,引用是变量的一个别名,通常用于函数传递参数。


// 引用传参
void change(int &a,int &b)
{
int tmp = a;
a = b;
b= tmp;
}
change(a,b);


// 指针传参
void change(int* pA,int* pB)
{
int tmp = *pA;
*pA = *pB;
*pB = tmp;
}
change(&x,&y);



11. 类重复定义问题:


#ifndef POINT_H
#define POINT_H
class Point
{};
#endif


12. vc++程序编译链接原理及过程

预处理->编译->链接


封装、继承、多态。当一个对象生命周期结束时,其所占有的内存空间就要被回收,这个工作就由析构函数来完成。 
2、析构函数是“反向”的构造函数,析构函数不允许有返回值,更重要的是析构函数不允许带参数,并且一个类中只能有一个析构函数。 C++又规定,如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数(由C++编译器提供),这个默认的构造函数是一个不带参数的构造函数,它只负责创建对象,而不做任何的初始化工作。 
4、只要一个类定义了一个构造函数,不管这个构造函数是否是带参数的构造函数,C++就不再提供默认的构造函数。也就是说,如果为一个类定义了一个带参数的构造函数,还想要无参数的构造函数,则必须自己定义。 

封装、继承、多态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC视频教程(孙鑫)学习笔记2-掌握C++ 的相关文章

随机推荐

  • 自动化测试文档整理

    自动化测试 广义上讲一切使用代码或程序来辅助或代替人工测试的行为都认为是自动化测试 自动化测试作用 提高工作效率 释放人力 可以把人从一些重复性的工作中解放出来 应用环节 主要应用在回归测试和兼容性测试 适合自动化测试产品特点 1 需求比较
  • 基于深度学习的推荐算法——推荐系统模型搭建基础及DeepCrossing原理

    本章节从推荐系统模型搭建基础和DeepCrossing原理讲解及实操两方面展开 一 推荐系统模型搭建基础 1 Keras搭建模型 keras搭建模型主要有两种模式 一种是Sequential API 另外一种是Functional API
  • 10.用户登录——什么是token、生成token、token获取用户信息免密登录、登录装饰器

    1 为什么需要登录认证 换句话来说 为什么需要session cookie和token 这个认证信息需要的原因 就是比如说我们今天使用淘宝点击添加购物车 然后就需要一个请求 但是发送这个请求之前 需要验证是哪个用户所登录 所以就需要一个类似
  • 毕业设计-基于深度学习的人脸表情识别

    目录 前言 课题背景和意义 实现技术思路 一 深度学习理论基础 二 AdaBoost 结合 SVM 算法表情识别 三 基于 MTCNN 算法的人脸表情识别 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕
  • ideaj项目添加Junit

    像如下图片这样无法使用 test 是以为没有导入Junit包所导致的 所以先把对应的jar包导入进去 1 打开idea 点击右上角的文件 找到项目结构 2 打开项目结构之后 找到依赖 点击 号 在对应的ideaj安装路径的lib文件目录中找
  • C# 四种随机数生成算法 线性同余 莱默算法 Wichmann-Hill 延迟斐波那契数列

    Net自带随机数的调用 实质为线性同余 后面有介绍 double matrix new double 20 20 rows matrix LoadData C Somewhere SomeFile txt int lo 0 int hi 2
  • 动手学DL——深度学习预备知识随笔【深度学习】【PyTorch】

    文章目录 2 预备知识 2 1 数据操作 2 2 线性代数 矩阵计算 2 3 导数 2 4 基础优化方法 2 预备知识 2 1 数据操作 batch 以图片数据为例 一次读入的图片数量 小批量样本可以充分利用GPU进行并行计算提高计算效率
  • Http方法之PUT

    PUT方法与POST类似 PUT方法与POST类似 但是在HTTP中 PUT被定义为具备幂等性 idempotent 的方法 POST则不是 具备幂等性也就意味着 在REST服务的API中 如果你想对一个API执行多次操作 而对于服务器造成
  • java1.8分组及其常用方法

    filter 过滤条件 Map
  • 数据采集:数据挖掘的基础

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 关注 关注必回关 上一篇文章已
  • html设置背景图片自适应

    在网上找了很久 终于在一个百度问答里找到正确答案 记录下来 方便以后使用 在中设置 第一行是图片url 第二行是背景图片不重复 第三行是达到窗口的百分百比例 第四行是图片固定 随着页面滚动而移动
  • 期刊和会议论文的区别

    文章目录 期刊 主要用途 标志 会议论文 标志 区分 期刊 主要用途 评审职称 硕士小论文发表 标志 期刊论文著录有作者 论文题名 期刊名 出版年 卷 volume 期 Issue 起止页码等信息 一般期刊以年为单位称为卷 在每年中又有很多
  • 在vue项目中优雅的使用Svg

    本文主要以 vue cli3 搭建的项目为例 来聊一下如何在项目中更优雅的使用 svg 众所周知 vue cli3 已经推出很长一段时间了 大家可以感受一下 vue cli3 带来的零配置体验 But 也相应带来了一些弊端 就是如归需要修改
  • 【星海随笔】SQL的基础操作

    架构话查询语言 Structured Query Language DDL 数据定义语言 dataDefinition Language CREATE ALTER DROP DML 数据操作语言 data Manipulation Lang
  • 如何用CSS实现响应式布局

    在今天的移动互联网的时代 越来越多的人通过手机或平板等移动设备访问网站 因此实现响应式布局变得越来越重要 在这篇博客中 我们将学习如何使用CSS实现响应式布局 什么是响应式布局 响应式布局是指在不同尺寸和设备上自适应调整页面显示效果的能力
  • 图片上传几种方式总结

    1 html表单上传 不推荐 最传统的图片上传方式是form表单上传 使用form表单的input type file 控件 打开系统的文件选择对话框 从而达到选择文件并上传的目的 form表单上传 表单上传需要注意以下几点 1 提供for
  • 【CV】使用 OpenCV 将照片变成卡通

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • i.MX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2,0)

    i IMX6ULL 问题解决 NFS挂载失败 VFS Unable to mount root fs on unknown block 2 0 开发环境 移植的linux5 4 7 0 ubuntu1804 x64 arm linux gn
  • 毕业设计-机器视觉深度学习的视频去水印算法

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • MFC视频教程(孙鑫)学习笔记2-掌握C++

    这一集中 主要总结了C 经典语法与应用 1 C 的三大特性 封装 继承 多态 2 C 中提供了一套输入输出流类的对象 它们是cin cout和cerr 对应c语言中的三个文件指针stdin stdout stderr 分别指向终端输入 终端