刚入职新公司一周,应聘的职位是C++开发岗。我的师父说可以每周写篇博客,记录下自己的学习情况和知识总结,坚持下来就能成为大神。为了成为技术大神,我决定以后每周写篇博客,记录自己在公司的学习和生活。这周主要温习了下C++的一些基础知识。学习的网站是在runoob.com。链接如下:C++学习网站

这个网站对刚学习C++的人来说可能有点不太友好,知识太过笼统,对原理讲解不多;但是对已经系统学习过C++的人来说是个很好的复习网站。好了,废话少说。下面我将对我这周所学习的C++基础部分进行大致的梳理总结。

目录

C++基础

1.数据类型

C++和Java的数据类型有所不同,C++主要有7种数据类型,分别是

  1. bool 布尔型,true或false
  2. char 字符型 ,1个字节
  3. int 整型,4个字节
  4. float 单精度浮点型,四个字节
  5. double 双精度浮点型,8个字节
  6. void 无类型
  7. wchar_t short int 宽字符型 2或4个字节

2.修饰符类型

主要有4种,分别是signed、unsigned、long、short。修饰符 signed、unsigned、long 和 short
可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。 修饰符 signed 和 unsigned
也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。

unsigned x;
unsigned int y;

3.存储类

  1. auto存储类 声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
auto f=3.14;      //double
auto s("hello");  //const char*
  1. register存储类 定义存储在寄存器中而不是 RAM 中的局部变量。
 register int  miles;
  1. static 存储类 指编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。
#include <iostream>// 函数声明
void func(void);static int count = 10; /* 全局变量 */int main()
{while(count--){func();}return 0;
}
// 函数定义
void func( void )
{static int i = 5; // 局部静态变量i++;std::cout << "变量 i 为 " << i ;std::cout << " , 变量 count 为 " << count << std::endl;
}
  1. extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 ‘extern’ 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

4.运算符

C++中存在多种运算符,详情请点击网址查看:C++运算符

5.循环和判断

C++中的循环和判断和C语言中的一致。循环有for循环、while()循环、do…while()循环。判断有if(),
switch语句等。在循环中要注意两个关键字break和continue。break是直接中断最近一层循环,而continue是结束本次循环后进行下一次循环。

6.函数

函数定义的一般形式如下:

return_type function_name( parameter list ){body of the function}

在 C++ 中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

返回类型:一个函数可以返回一个值。return_type
是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。

函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

函数主体:函数主体包含一组定义函数执行任务的语句。

函数的声明:

return_type function_name( parameter list );

7.数组

  • 数组的声明
type arrayName [ arraySize ];
  • 初始化数组
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
  • 访问数组元素
double salary = balance[9];
  • 多维数组的声明
type name[size1][size2]...[sizeN];

8.字符串

字符串实际上是使用 null 字符 \0 终止的一维字符数组;有关字符串的一些常见函数可以查看下面链接链接

9.指针和引用

指针和引用是我认为学习C++最难懂最晦涩的部分,现在我感觉还没学透,就写一些基础的概念。等我学成归来一定会开单章详细讲述指针和引用。

  • 指针:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。
  • 引用:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
  • 创建引用:
int i = 17;
int&  r = i;
double& s = d;

10.输入输出流

  1. 标准输出流(cout)

预定义的对象 cout 是 iostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符<< 结合使用的。

  1. 标准输入流(cout)

预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >>
结合使用的。

  1. 标准错误流(cerr)

预定义的对象 cerr 是 iostream 类的一个实例。cerr 对象附属到标准输出设备,通常也是显示屏,但是 cerr
对象是非缓冲的,且每个流插入到 cerr 都会立即输出。cerr 也是与流插入运算符 << 结合使用的

  1. 标准日志流(clog)

预定义的对象 clog 是 iostream 类的一个实例。clog 对象附属到标准输出设备,通常也是显示屏,但是 clog
对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。clog 也是与流插入运算符 <<
结合使用的

面向对象

1.类和对象

  • 类:本质是定义一个数据类型的蓝图,以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。
  • 对象:对象根据类来创建。声明类的对象就像声明基本类型的变量一样。

2.访问修饰符和继承类型

  1. 访问修饰符

类中成员如果没有明显声明那么默认为private; public 类外部可以访问,可以不使用任何成员函数设置和获取公有变量的值;
private 类外不可访问、不可查看; protected 和private类似,只是protected成员在派生类中可以访问.

  1. 继承类型

public继承 基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public,
protected, private; protected继承 基类 public 成员,protected 成员,private
成员的访问属性在派生类中分别变成:protected, protected, private; private继承 基类 public
成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private, private

3.构造函数和析构函数

  1. 构造函数的定义:

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回
void。构造函数可用于为某些成员变量设置初始值。在每次创建类的对象时执行。

  1. 成员初始化列表:

类名:: 构造函数名([参数表])[:(成员初始化列表)]{构造函数体}

//假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,同理地,您可以使用上面的语法,只需要在不同的字段使用逗号进行分隔,如下所示:
C::C( double a, double b, double c): X(a), Y(b), Z(c)
{....
}
  1. 析构函数:

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。会在每次删除所创建对象时执行。

4.友元函数和内联函数

  • 友元函数(friend)

friend 定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。友元函数并不是成员函数。

  • 内联函数(inline)

编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方,节省代码运行的时间。

5.this指针

每个对象都能通过this指针来访问自己的地址。只有成员函数才有,友元函数无this指针。

6.静态成员和静态成员函数

  • 静态成员:

static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。

  • 初始化静态成员

在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化

  • 静态成员函数

静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。没有this指针。

7.重载运算符

  • 成员运算符重载:
Box operator+(const Box&);
  • 非成员运算符重载
Box operator+(const Box&, const Box&);

8.多态

  • 定义:

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

  • 虚函数:

基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。
我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。

  • 纯虚函数:

在基类中定义虚函数,以便在派生类中重新定义该函数来更好地适用于对象,并且在基类中又不能对虚函数给出有意义的实现

9.接口和抽象类

C++
接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用
“= 0” 来指定的

10.数据抽象和数据封装

  • 数据抽象:

只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。

  • 数据封装:

面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。

相关思维导图

总结

由于时间紧写的比较仓促,自己的知识储备也有不足,所以写的内容难免有些错误,希望大家发现错误后能私信我或评论,我一定改正!就到这吧。。。。

关于C++基础部分的梳理相关推荐

  1. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  2. Java SE 基础知识体系梳理

    ## Java SE 基础知识体系梳理 ----------day01------------- (1)计算机的体系结构 (2)Java语言的概述 (3)开发环境的搭建和使用 1.计算机的体系结构(常 ...

  3. HTML5的基础知识的梳理及常用标签

    HTML5的基础知识的梳理及常用标签 1.HTML5的介绍 前端:展示页面.与用户交互 - HTML 后端:数据的交互和传递 - JavaEE/JavaWeb 1.前端开发的工作模式 网页的组成部分( ...

  4. Docker基础与进阶梳理(干货满满)

    目录 一,简介 1.1 什么是虚拟化 1.2 什么是 Docker 1.3 为什么选择Docker? 1.4 容器与虚拟机的比较 二,Docker 组件 2.1 Docker 服务器与客户端 2.2 ...

  5. 网络基础知识问答梳理

    原文链接  https://mp.weixin.qq.com/s/_yEqNFbxsIhS_45WKTy9_w 1)Http和Https的区别? 答:Http协议运行在TCP之上,明文传输,客户端与服 ...

  6. JavaScript 基础 | 基础语法知识梳理

    本文已收录于专栏 ⭐️ <JavaScript>⭐️ 此专栏适用于已经入门JavaScript的同学做复习回顾使用,因为讲解具有跳跃性不推荐零基础的新手学习~ 语法 因为我们的文档页面是从 ...

  7. USB基础与重点梳理—关于USB的问题

    Q1. USB的传输线结构是如何的呢? A1: 一条USB的传输线分别由地线.电源线.D+.D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源 ...

  8. 通信原理基础知识问答梳理(史上最全)

    1.莱斯分布在什么条件下可以近似为高斯分布? 当信噪比很大时 2.随机过程是否存在傅里叶变换?如果没有,应该如何描述随机过程的频谱特性? 随机过程不满足绝对可积和能量有限的条件,不存在傅里叶变换,可用 ...

  9. 【Java新人学习指南】Java基础知识点大梳理

    各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,在这里准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊.但这个大西瓜可不是一般的大西瓜,是Java大神学习秘诀 ...

最新文章

  1. 牛!一周内被疯转,最终被所有大厂封杀的内容!
  2. mysql中自增auto_increment功能的相关设置及问题
  3. java数组 相同颜色距离最远的_java-数组列表并找到具有相同编号的最长子...
  4. python免费试听-小栈春季编程免费试听课 倒数6天!
  5. 15、HTML单行文本框
  6. 学习日报 1027 自动类型转换 运算符
  7. [转]ubuntu network is unreachable 解决记
  8. layui的tree实现 struts 2+layui+jsp
  9. 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句
  10. VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?...
  11. 基于近邻法的分类器设计
  12. android VideoPlayer原生播放方式
  13. 蓝丝雨dnf刷图脚本制作
  14. springboot制作补丁包通用解决方案
  15. 景观设计名字主题_园林景观好听的名字
  16. latex段落悬挂缩进_使用正则表达式在Java中悬挂缩进段落
  17. 【编程实践】一致性哈希(hash)算法实现
  18. 【Linux 网络】IP校验和计算相关
  19. 软件测试简历投递小技巧,百分百避免已读不回,成功入职增加30%
  20. 09.PATH变量、PS1变量、LANG语系变量、位置参数变量、预定义变量详解

热门文章

  1. 每个程序员都应该知道的 CPU 知识:NUMA
  2. ViewStub 测试Demo By Terry
  3. kde钱包管理应用_5个出色的KDE应用可帮助您学习
  4. Linux双系统硬盘识别不了,Linux和win8双系统磁盘错误问题
  5. python制作七夕礼物_opencv+python制作硬核七夕礼物
  6. STM32进阶之串口环形缓冲区实现
  7. 送给Java新手的建议!
  8. niagara的插件下载_Niagara下载-Niagara桌面下载v0.31.1 中文版-西西软件下载
  9. WIN7下建行捷德U盾支付完美解决!(白框问题)
  10. 开卖半年营收有望过亿,扫地机器人品牌「由利」获梅花创投数千万投资