C++第一期

一、C++简介

C++是C语言基础上建立的,有本贾尼博士在1979年创造

主要是在C语言上增加了更多功能和面向对象,C++兼容C语言;但它也有很多不同于C语言方;

接下来这篇博客是关于C++的一些小语法。

二、语法

1.namespace命名空间域

C++增加了一个空间名域;主要是防止和一些函数名重名;

比如rand()函数,他是在头文件为stdlib.h的头文件下;当没有该头文件时我们定义一个rand的变量是可以的,但是在加上stdlib,h头文件后;就会出错;rand变量和rand()函数重名;所以C++看C语言不爽,增加了一个namespace的命名空间域;这个命名空间域;

语法:关键字 namespace+ 域名(自己定)+{}(主体)

在这个域名了;可以定义类型、函数、结构体的等;域名可以嵌套;域名只能是全局;

用法:域名::域名成员

2.using(展开)

这个关键字是对命名空间域展开;可以对域名里面的某个成员展开;也可以对找整个域名进行展开。

用法: (1)对成员展开using+命名空间::成员

            (2)对整个命名空间展开:using+namespace+域名

展开之后;下回使用变量时再也不用加 域名::;但是对整个域名空间展开的话;相当于对这些变量收回了一层保护障;以后用还是会出现命名冲突的情况;所以自己写的一些代码可以全部展开;但是在公司就不建议展开了。

3.输入输出(io流)

包含的头文件是<iostream>没有.h,老的一些编译器会有,但是C++11以上的版本就没有了,输入输出在一个std命名空间域里,这个可以展开;

用法:#include<iostream>

          using namespace std:

          cout<<"hello world"<<endl;

        int a;

        cin>>a;

endl相当于'\n'换行,他们两个用哪个都行;

一些细节的笔记都在这里了

4.函数缺省值

C++的函数声明和定义和C是一样的只不过多了一个缺省值的概念,缺省值也叫做默认值,就是在声明函数或者定义的时候,给形参初始化一个值,

列如 int Add(int x=1,int y=1)

有了缺省值我们可以不传任何参数,函数会调用缺省值,当然我们也可以传参,当传了参数的时候缺省值就不起作用了。

缺省值规则:

(1)缺省值分为全缺省和半缺省

(2)半缺省规定只能从右边开始缺省一半,中间不能跳跃,传参的时候从左往右传,没有缺省的地方,一定要传,缺省的地方可以不传,但是,不能跳跃的传

(3)定义和声明分离时不能同时出现缺省,规定只有声明的地方才能缺省;

5.函数重载

函数重载的意思是函数名相同但是功能不同,也就是函数名相同但是参数的个数顺序,类型不同,

函数重载的出现,极大的提供了我们使用的舒畅度,比如一个Add函数,如果参数是int类型的那么我们就不能计算double类型的,那么我们就得重新另取别的名字然后,在我们用的时候呢,就不那么方便,所以出现了函数重载的概念,在使用的时候呢,直接写Add函数就可以了,传参的时候就不用管了,他会根据参数的不同区调用对应的函数

注意:缺省函数和无参函数构成重载,但是在调用的时候,由于缺省的也可以不用传值所以就会产生分歧,编译就会报错,所以进一步的说他们不能同时存在一个域里面,可以把另一个放到别的命名空间域里;

6.引用

引用:类型& 引⽤别名 = 引⽤对象
引用不是定义新的变量,而是给已有的变量取别名;引用不会开辟额外的空间,而是和这个变量用同一块空间;
引用的时候必须给初始值;
这个引用一旦引用了实体就不能引用其他实体

引用就相当于,你是我,我是你;
引用有指针的功能,但不能代替指针;
在传参的时候很好用;可以用不用传地址,用指针接收,可以用引用

引用不能改变指向

引用在传参和传值返回的时候很好用,比如Swap()函数直接使用引用就能做到里面的值可以改变外里面的值,主要就是他们的地址相同,所以你改变了,我也就改变了。

引用和和指针的关系

C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功
能有重叠性,但是各有⾃⼰的特点,互相不可替代。
• 语法概念上引⽤是⼀个变量的取别名不开空间,指针是存储⼀个变量地址,要开空间。
• 引⽤在定义时必须初始化,指针建议初始化,但是语法上不是必须的。
• 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象;⽽指针可以在不断地改变指向对象。
• 引⽤可以直接访问指向对象,指针需要解引⽤才是访问指向对象。
• sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数(32位平台下
占4个字节,64位下是8byte)
• 指针很容易出现空指针和野指针的问题,引⽤很少出现,引⽤使⽤起来相对更安全⼀些。

7.const引用

为了能更加的贴合实际,我就用我写的笔记放在这里

只需要明白,const修饰的是一些具有常性的东西,比如:一些不能被改变的东西,数字,临时变量,存在运算关系,类型转换关系等都会产生临时变量。

8.inline内联函数 

在函数前面加上inline,内联函数的出现是为了解决宏函数的问题,宏函数在调用的时候会展开,不过宏函数容易写错,在调用的时候会有风险,所以就出现了内联函数,内联函数在调用的时候也会展,避免建立函数栈贞,提高速率;
主要解决的是宏函数的问题,因为宏函数在展开的时候会出现很多问题,这是写成内联函数就好多了
但他只适用于小函数,那些大函数,递归很多的时候编译器默认不展开;所以展不展开由编辑器决定
内联函数声明和定义不能写到两个文件里去;当调用展开时,会找不到这个函数,将无法展开
vs只有在release版本下才会展开,debug的可以设置一下

9.空指针nullptr

完!有问题的私信我,我来为你解答!

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值