提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、命名空间

1.1命名空间引入

1.2命名空间使用规则

二、C++的输入输出

2.1使用输入输出需要头文件iostream

1.3输入a的值

2.4输出a的值

2.5.利用命名空间和c++输如输出的知识可以很好地理解下面的代码

3.缺省函数

3.1,缺省函数简介

3.2.全缺省函数

3.3半缺省函数

4,函数重载

4.1函数重载的定义

4.2为什么c语言不能实现函数重载?

4.3函数重载的作用

4.4代码示例

5,引用

5.1引用简介

5.2引用特点

5.3引用与const

5.4引用与指针

6.内联函数

6.1内联函数简介

6.2,内联函数的特点

7.auto

7.1auto简介

7.2auto识别简单的变量

7.3auto特性

一、命名空间

1.1命名空间引入

在c语言中我们只有两个作用域:全局作用域和函数作用域。

全局作用域:全局变量和函数的声明定义

局部作用域:形参,局部变量

由于变量、函数、只能存放于这两个域,开发者开发一个项目的时候,大多数情况下我们都是多人合作完成一个项目,那么在我们将多个不同开发者扶着的板块链接的时候,很大可能出现自己写的函数或变量与他人出现同名的情况,这样就会使编译出现错误,而现在命名空间随着c++而引入,相当于一个灵活的文件域,其目的就是为了解决命名冲突的问题。

1.2命名空间使用规则

1.命名空间(使用全局变量在变量前加::(如果主函数有同名变量的话,否者不用加))
2.使用某一个命名空间的变量的话要在前面加命名空间名称::变量名。

3标准c++库所有组件都在std的命名空间里声明和定义的,在标准c++平台调用如下语句

using namesapce std;

二、C++的输入输出

c++的输入输出相比来说更加简洁具体表现为

输入输出不需要设置格式c语言中输入char c 输出char c则需要scanf("%c",&c);以及printf("%c",c);而c++没有那么复杂

2.1,使用输入输出需要头文件iostream

c++兼容c语言,c++为了区别c语言的头文件不带.h

例如:#inlcude<iostream>

2.2,流插入流运算符和流提取运算符

流插入:<<

流提取:>>

1.3,输入a的值

cin>>a;

2.4,输出a的值

cout<<a<<endl;(endl为换行)

2.5.利用命名空间和c++输如输出的知识可以很好地理解下面的代码

using namespace std;
//命名空间(使用全局变量在变量前加::(如果主函数同名变量的话,否者不用加))
//使用某一个命名空间的变量的话要在前面加命名空间名称::变量名;
namespace N{int a = 20;
}
int a = 30;
int main(){int a = 10;cout << a << endl;//输出主函数内的acout << ::a << endl;//输出全局域中的acout <<N:: a << endl;//输出命名空间N的asystem("pause");return 0;}
#en

输出结果:

10

30

20

3.缺省函数

3.1,缺省函数简介

在c语言中,函数没有指定的参数列表,默认可以接收任意多个参数,而在c++中,因为有严格的参数类型检测,没有参数列表的函数,默认为void,即不接收任何参数。

c++指出,在声明或定义函数时,可以给函数带上一个默认值在调用该函数时,如果没有指定实参,则采用改形参的缺省值,否者使用指定的实参。

缺省函数的默认值只能是常量或者全局变量。

3.2.全缺省函数

全缺省:全缺省函数即函数的所有参数都带有默认值,如果没有手动传参,那么编译器会自动使用默认参数列表里的默认值,但是如果我们选择只传一部分的的参数,一部分不传使用默认值,那么我们手动传的的实参会被从左到右进行匹配。

如下面代码中函数

运算结果sum=5;sum2=4;

int add(int x =2, int y = 1){return x+y;
}
int main(){int a=3, b=2;int sum = add(a, b);int sum2 = add(a);cout << sum <<endl<< sum2 << endl;system("pause");return 0;
}

3.3半缺省函数

半缺省函数即部分参数有默认值部分没有,但是要注意的是,有默认值的形参要放到函数形参列表的后面。.

int add(int x , int y = 1){return x+y;
}
int main(){int a, b=2;cout << "请输入1个数" <<endl;cin >> a;int sum = add(a, b);int sum2 = add(a);cout << sum <<endl<< sum2 << endl;system("pause");return 0;
}

4,函数重载

4.1函数重载的定义

在c++中,如果多个函数作用域相同,函数名字相同,并且参数列表不同的系列功能类似的函数,我们将其称为函数重载。

注意事项

1.其中,参数列表不同可以具体表现为参数个数,或类型,或类型顺序不同

2.返回值类型和函数重载没有关系,可以相同可以不同。

3.编译器在编译时具体调用哪个函数将去决于调用时传递的什么类型的实参

4.如果没有找到直接匹配的函数,编译器会优先尝试进行隐式类型转换,合适通过编译,否则报错

4.2为什么c语言不能实现函数重载?

更深层次的原因是c和c++编译器在编译阶段对函数名字的修饰规则不同。

4.3函数重载的作用

重载函数通常放在一个作用域内,用同一个函数命名一组功能类似的函数,这样减少了函数名,对程序的可读性有了很大的提升。

4.4代码示例

int add( int a,int b)
{return a+b;
}
float add(float a,float b)
{
return  a+b;
}

5,引用

5.1引用简介

引用不是定义一个新变量,而是给已存在的变量起了一个别名,引用变量和被引用的已存变量共用一个内存空间

引用定义格式:类型&引用变量=已定义的变量

5.2引用特点

1.引用变量类型和实体变量的类型必定是一致的。

2.一个实体变量可以有无数个引用变量,但一个引用变量只能在初始化时引用一个实体变量。

3.常量不能被引用

4.如果引用类型作为函数的返回值类型,返回的实体的生命周期一定要比函数长,即不能随着函数的结束而销毁。

5.3引用与const

用const修饰的引用变量它的值不能修改。

例如有时候我们只是想往一个函数中传入实体变量的值或者地址,我们并不想改变它的值,因而用函数的形参由&a改为const &a使得代码的安全性更高

5.4引用与指针

相同点:

1.在底层实现方式上:指针和引用就是一样的,即引用在底层就是按照指针的方式来实现的

2.引用实际上是有空间的,其空间上放的是引用实体变量的地址。

3.T&可以看成是T* const类型的指针

不同点:

1.在概念层面上:引用是一个别名,与其引用实体共用一个内存空间,编译器不会给引用变量分配新的空间,而指针是有空间的,其空间存储一个变量地址。

2.引用在定义时需要初始化,指针没有要求。

3.引用只能在初始化时引用一个实体,往后不能引用其他实体,而指针可以指向任意一个同类型的实体变量;

4.在sizeof中的含义不同,引用结果为引用类型的大小,但指针始终是地址空间所占的字节数(32位下4字节64位8字节)

5.引用比指针更安全。

6.引用++为实体++,指针++则向后偏移一个类型的大小

7.访问实体的方式不同,指针需要解引用,引用编译器会自己处理。

6.内联函数

6.1内联函数简介

以inline修饰的函数(内联函数)编译时C++编译器会调用内联函数的地方展开,这样会没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。

6.2,内联函数的特点

1.内联函数是用空间换取时间提高程序运行效率的。

2.内联函数对于编译器来说只是一个建议,inline是一个建议性关键字,不同的编译器对于内联函数机制可能不同。一般建议将规模较小的(取决的编译器内部实现)、不是递归,批犯调用的函数采用inline修饰,否则编译器会自动忽略inline的特性。

3.inline不建议声明和定义分开,分离会导致链接错误,因为inline函数被展开,就没有函数地址了,链接就找不到了。

7.auto

7.1auto简介

早期c/c++中auto的含义,使用auto修饰的变量,是具有自动存储器的局部变量,但是从实际效果上看,很少有人会去使用它。

c++11后auto有了新的含义:auto不再是一个存储类型的指示符,而是作为一个新的类型指示符来指示编译器。auto声明变量必须由编译器在编译阶段推导而得。

7.2auto识别简单的变量

#include<stdio.h>
#include<windows.h>
#include<iostream>
using namespace std;
int main(){auto a = 3.14;auto b = 2;auto c = "hello bit!";auto d = 'A';cout << a << endl << b << endl << c << endl << d << endl;system("pause");return 0;
}

7.3auto特性

1,auto定义变量时必须给出初始化

2,auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时必须加&。

3,当auto在同一行定义多个变量的时,这些变量必须是同一类型,且要被初始化。否则编译器会进行报错,因为编译器实际 只会对第一个变量进行推导,然后用推导出来的类型去定义其他的类型。

4.auto不能作函数形参的类型

5.auto实际中最常见的优势用法就是以后会讲到的c++11提供的新式for循环,还有lambma表达式进行配合使用。

7.4auto循环

对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因此C++11中引入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围

int main(){int a[] = { 1, 2, 3, 4, };for (auto temp : a){ cout << temp << "\t";
}system("pause");return 0;
}

 7.42auto&可以对数组a中的元素进行修改

int main(){int a[] = { 1, 2, 3, 4, };cout<<"before:"<<;for (auto temp : a){ cout<< temp<< "\t"; }cout << endl<<"after:";for (auto& temp : a){cout << temp + 1 << "\t";}cout<<endl;system("pause");return 0;
}

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

C++入门知识点汇总相关推荐

  1. C# 零基础入门知识点汇总

    C# 零基础入门 知识点汇总 前言 一,基础语法(1~10) 二,流程控制(11~20) 三,数组相关(21~30) 四,函数介绍(31~40) 五,类和对象(41~50) 六,面向对象(51~60) ...

  2. C++——入门知识点汇总(命名空间、缺省、重载、引用等)

    文章目录 前言 一.什么是C++? 二.命名空间 2.1 命名空间的定义 2.2 命名空间的使用 三.输入&输出 四.缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 注意: 五.函数重载 ...

  3. python程序设计知识点汇总_Python入门知识点汇总

    Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...

  4. COM新手入门知识点汇总

    导读: COM组件:指实现某个功能集合的服务器,可以是dll.exe或者其它.一般用c++实现,也可用其  它语言实现,和语言无关.com组件可以存在于本地电脑,也可以存在于远程服务器中. COM注册 ...

  5. Python零基础入门,纯干货!【Python基础知识点汇总整理】

    目录 第一章 认识Python.Python常用集成开发环境PyCharm 一.认识 Python 01. Python 的起源 1.2 Python 的设计目标 1.3 Python 的设计哲学 0 ...

  6. 机器学习、深度学习面试知识点汇总

    作者丨Oldpan 来源丨oldpan博客 编辑丨极市平台 导读 本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识. 前言 最近这段时间正临秋招,这篇文章是老潘在那 ...

  7. Vue 知识点汇总(下)--附案例代码及项目地址

    文章目录 Vue 预备知识与后续知识及项目案例 一.简介 1.Vue (读音 /vjuː/,类似于 view)的简单认识 2.Vue.js安装 二.Vue知识量化 三.内容 1.Webpack 详解 ...

  8. 关于代码家(干货集中营)共享知识点汇总系列——瞎推荐

    关于代码家(干货集中营)共享的所有知识点其他方面的汇总,后续每周会对其进行更新 更多内容请选择以下入口 关于代码家(干货集中营)共享知识点汇总系列--Android 关于代码家(干货集中营)共享知识点 ...

  9. 【CV知识点汇总与解析】|激活函数篇

    [CV知识点汇总与解析]|激活函数篇 [写在前面] 本系列文章适合Python已经入门.有一定的编程基础的学生或人士,以及人工智能.算法.机器学习求职的学生或人士.系列文章包含了深度学习.机器学习.计 ...

最新文章

  1. def __init__(self)是什么意思_子类必须调用 super().__init__() 吗?
  2. 厉害了,淘宝千万并发,14 次架构演进…
  3. 深入理解javascript原型和闭包(12)——简介【作用域】
  4. Python核心数据类型之字典15
  5. cf246E. Blood Cousins Return
  6. 干掉ubuntu中的overlay scrollbar
  7. 常量表达式不允许函数调用_SQLite特殊索引之表达式索引
  8. 心理正常与异常的区分_教师培训 | 学生常见心理问题的表现与识别
  9. 分布式mysql 不支持存储过程_分布式数据库VoltDB对存储过程的支持
  10. 使用PHP来获取客户端和服务端IP
  11. 阅读《视音频编解码技术零基础学习方法-雷霄骅》摘要
  12. 人参鹿鞭片39.9/花花公子裤子29/除螨仪9.9/三合一数据线8.8/阿迪达斯沐浴露39.9/超多好物你等!...
  13. 学生宿舍管理系统java课设_JAVA学生宿舍管理系统
  14. ​计算机视觉传感器系统
  15. Linux 命令 wc / awk
  16. GoJS-FlowChart样例代码分析
  17. 卡内基沟通与人际关系
  18. 分时系统中,当用户数目为100时,为保证响应时间不超过2s,此时的时间片最大应该为
  19. djang urls.py 无名有名分组,反向解析,路由分发,名称空间,伪静态,虚拟环境,django版本...
  20. Sensor信号输出YUV、RGB、RAW DATA、JPEG【转】

热门文章

  1. 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离...
  2. 基于Python的汉语多音字注音研究
  3. 语义搜索及框计算:从百度查生僻字谈起
  4. Three.js新手入门实践案例解析
  5. PHA关闭测试网、预备网即将正式上线!
  6. portainer添加mysql
  7. vivo怎么调时间_手表怎么调时间?日期时间怎么调,电子手表
  8. 自定义kafka高效的protoStuff序列化
  9. Loam算法详解(配合开源代码aloam)
  10. L1-043 阅览室 c语言简单