c到c++衔接速成

温馨提示:本篇文章乃博主多次学习后的总结,其中一些专业名词的概念不会做介绍,本篇文章只解决实操问题

c到c++中,语法上得到了许多升级,那么哪些地方升级了,我们来快速复习一下

目录

头文件的升级

命名空间

定义方式

本质

命名空间使⽤

输入和输出

输入

变量名输入

数组输入

普通数组的输入

字符串的输入

输出

普通输出

数组的输出

缺省参数

概念

种类

半缺省

全缺省

函数重载

[// 1 、参数类型不同](#// 1 、参数类型不同)

[// 2 、参数个数不同](#// 2 、参数个数不同)

[// 3 、参数类型顺序不同](#// 3 、参数类型顺序不同)

错误的函数重载

引用

概念

定义

特性

引用的使用

const引用

引用和指针的关系

inline

nullptr


头文件的升级

c语言的头文件<stdio.h>包含了输入以及输出,当然啦在vs中还需要再加上一串特殊的代码才能保证scanf正常使用

c++头文件<iostream>包含了输入和输出,但并没有使用库,因此当使用cin和cout时依旧会报错,那么如何解决这种问题呢?方法一使用using namespace std; 方法二使用辩位符(::),如果你愿意也可以叫它冒号双胞胎,那么只要是遇到std库包含的东西就必须在它的前面加上std::

命名空间

定义方式

namespace 空间名

{

}

本质

定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量

命名空间使⽤

1.指定命名空间访问, 即:命名空间::(辨位符)

2.using将命名空间中某个成员展开, 即在main函数上面添加using namespace 空间名;

输入和输出

输入

变量名输入

cin >> a;

数组输入

普通数组的输入

for(int i = 0; i < sz(数组的长度);i++)

{

cin >> a[i];

}

字符串的输入

cin >> a;//这个a是数组名。

输出

普通输出

cout << 变量名 << endl;

数组的输出

for(int i = 0; i < sz(数组的长度);i++)

{

cout << a[i];

}

缺省参数

概念

声明或定义函数时为函数的参数指定⼀个缺省值。

种类

半缺省

概念:函数的部分形参有缺省值

注意:必须从右往左依次连续缺省,不能间隔跳跃给缺省值。

样例:

void Func2(int a, int b = 10, int c = 20)

{

cout << "a = " << a << endl;

cout << "b = " << b << endl;

cout << "c = " << c << endl << endl;

}

全缺省

概念:函数的部分形参有缺省值

样例:

void Func1(int a = 10, int b = 20, int c = 30)

{

cout << "a = " << a << endl;

cout << "b = " << b << endl;

cout << "c = " << c << endl << endl;

}

函数重载

概念:在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。

// 1 、参数类型不同

int Add(int left, int right)

{

cout << "int Add(int left, int right)" << endl;

return left + right;

}

double Add(double left, double right)

{

cout << "double Add(double left, double right)" << endl;

return left + right;

}

// 2 、参数个数不同

void f()

{

cout << "f()" << endl;

}

void f(int a)

{

cout << "f(int a)" << endl;

}

// 3 、参数类型顺序不同

void f(int a, char b)

{

cout << "f(int a,char b)" << endl;

}

void f(char b, int a)

{

cout << "f(char b, int a)" << endl;

}

错误的函数重载

void f1()

{

cout << "f()" << endl;

}

void f1(int a = 10)

{

cout << "f(int a)" << endl;

}

注意:函数重载只与参数有关

引用

概念

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,当然它的本质还是传地址

定义

类型& 引⽤别名=引⽤对象;

特性

1.引⽤在定义时必须初始化

2.⼀个变量可以有多个引⽤

3.引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体

总结:引用必须初始化,变量支持多引用,只能引用一个实体

引用的使用

引⽤在实践中主要是引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被 引⽤对象。

引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

总结:可以减少拷贝从而提高效率,改变引用对象的同时,被引用对象也会被改变

样例:

void Swap(int& rx, int& ry)

{

int tmp = rx;

rx = ry;

ry = tmp;

}

const引用

const引用的对象可以是必须要const引用的对象或普通对象,对象的访问权限在const引⽤过程中只会缩小

引用和指针的关系

1.概念上,引用是给一个变量取别名,指针是存储一个变量的地址

2.初始化方面,引用必须初始化,指针建议初始化(也就是可以不初始化,但可能会出现一些问题)

3.引用:引用了一个对象后,不能再引用其他对象 指针:可以不断地变化所指向的对象

4.引用:直接指向一个对象 举例:在函数中使用引用后,形参改变后,实参也会改变

指针:需要解引用才能指向对象 举例:在函数中使用指针后,实参需要靠返回的指针才会改变

5.指针可能会出现空指针和野指针的问题,引用很少出现

6.sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数

inline

被inline修饰的函数叫内联函数,那么什么是内联函数?说白了就是将一些函数进行了折叠。

那么被它修饰的函数通常是那些短小且调用频繁的函数

被inline修饰的函数会在被调用处展开

nullptr

比c的NULL更高级,更好用,更安全

那么本篇文章的内容,就先到这里了。我们下期见。

都看到这里了,点个赞吧!

相关推荐
何曾参静谧几秒前
「QT」文件类 之 QTextStream 文本流类
开发语言·qt
monkey_meng4 分钟前
【Rust类型驱动开发 Type Driven Development】
开发语言·后端·rust
落落落sss13 分钟前
MQ集群
java·服务器·开发语言·后端·elasticsearch·adb·ruby
可均可可29 分钟前
C++之OpenCV入门到提高005:005 图像操作
c++·图像处理·opencv·图像操作
2401_8532757333 分钟前
ArrayList 源码分析
java·开发语言
zyx没烦恼33 分钟前
【STL】set,multiset,map,multimap的介绍以及使用
开发语言·c++
lb363636363633 分钟前
整数储存形式(c基础)
c语言·开发语言
feifeikon36 分钟前
Python Day5 进阶语法(列表表达式/三元/断言/with-as/异常捕获/字符串方法/lambda函数
开发语言·python
大鲤余43 分钟前
Rust,删除cargo安装的可执行文件
开发语言·后端·rust
机器视觉知识推荐、就业指导1 小时前
基于Qt/C++与OpenCV库 实现基于海康相机的图像采集和显示系统(工程源码可联系博主索要)
c++·qt·opencv