【C++】入门
C++在C语言的基础上进行了优化,从而从C语言的面向过程转变成C++的面向对象
一.C++关键字
C++63个关键字,C语言32个关键字
二.命名空间的含义
C语言中都是使用#Include 头文件,而在后期,代码量越来越多的情况下,可能会出现变量名字跟include 头文件 里面函数名字冲突的情况,就容易报错,所以C++里面使用了命名空间一个概念避免了此问题
关键字:namespace
命名空间中的内容变量等等只能在此空间使用
三.命名空间的使用
三种方式
1.using namespace 名字
2.using 名字 :: 此名字命名空间里的某个变量名字
3.printf("%d",名字 :: 此名字命名空间里的某个变量名字)
例如
using namespace N
using N::b
printf("%d",N::b);
四.输入和输出
C++的输入输出函数在命名空间里,名字叫做std
C++将标准库的定义都放在这个命名空间里
C++包含头文件时规定不加.h 旧编译器还可以加,现在不行了
使用输入和输出函数时,必须包含#Include <iostream>头文件 和std 命名空间
输出函数:count<<
count<<"Hello,World"<<endl
endl是换行的意思 也可以使用\n
endl也包含在iostream头文件里面
输入函数:cin>>
int a;
double b;
cin>>a
cin>>a>>b
//cout和cin可以自动识别变量类型,不用像C语言那种写格式符
五.命名空间的使用
日常使用时,推荐使用using std ::cout 和 using std :: cin
不用using namespace std
六 .缺省参数的含义
缺省参数是声明或者定义函数时为函数的参数指定一个缺省值,在调用函数时,如果没有指定的实参,则使用这个缺省值
七.缺省函数的分类
1.全缺省函数
2.半缺省函数
注意:1.半缺省函数必须从右往左依次来给,不能间隔给
2.缺省函数不能在函数和定义中同时出现
以上这种,编译器就不知道该使用那个作为形参了
八.函数重载的含义
1.概念:同名函数,但是这些同名函数的形参的类型,顺序,或者数量不同
2.单独返回值不同,不可以构成函数重载,运行报错
九函数重载的原理
问题:为什么C语言不支持函数重载,而C++支持呢?
一个程序要运行起来,需要以下几个阶段
预处理、编译、汇编、链接、
C语言跟C++的不同就在汇编完链接这个阶段上,就导致了一个不能重载一个能重载
-------------
在进行汇编后,产生汇编代码,这个时候C和C++的汇编代码产生了差异,他俩的函数名字部分汇编代码不同
-------------
C语言汇编完函数名字还是之前的函数名,而C++汇编完,同名的函数,在汇编代码里面产生了差异,每个同名函数都有自己的名字,这个名字是根据形参来决定的
-------------
所以重载函数必须形参不同,这就导致了C++不会报错,C语言会报错,因为同名名字冲突
-------------
windows和linux系统下,汇编完的函数命名规则不一样,windows的还比较复杂些,难看懂
-------------
十.引用的含义
1.引用不是新定义了一个变量,而是给这个变量起了一个新名字,编译器不会给引用变量开辟空间,他俩共用一块内存空间,就好像跟一个人有好几个外号一样,本人还是他
2.使用:类型& 引用变量名 = 引用实体
3.引用类型必须跟引用实体是一个类型的
4.引用的特性:
引用时必须初始化
一个变量可以有多个引用
引用一旦有了实体就不可以改变,跟指针变量不一样
5.使用场景两种:
做形参可以代替指针
做返回值
如果函数以及使用完毕,出了函数作用域,函数内的变量需要销毁还给系统
换给系统必须传值返回
如果变量还在,还没销毁,则可以用return返回引用类型
十一.引用和指针
1.引用和指针本质上是一样的,因为在底层汇编后,他俩的代码一致,可以说引用是用指针实现的
2.不同点
十二.内联函数
1.概念:跟C语言的宏函数类似,也是在编译时展开,部分简单函数可以用内联,但是函数代码量必须小于10行,多了的话系统自动按函数使用,不使用内联
因为函数每次使用都需要进行入栈出栈占用时间,部分简单函数用内联可以提高效率
只有在release模式下才行, debug版本需进行一些操作设置
2.使用:inline 函数
3.本质是是以空间换时间的玩法
4.面试题:
宏的优缺点?
优点:
1.提供代码的复用性
2.提高性能
缺点:
1.不方便调试,因为预编译已经替换了
2.代码可读性差,可维护性差。容易误用
3.没有类安全的检查
那些技术可以替代宏?
1.常量定义 const enum
2.内联函数
原文地址:https://blog.csdn.net/iiiiisss/article/details/142927820
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!