c++入门

文章介绍了C++中的命名空间用于避免命名冲突,以及如何使用using展开。还讨论了输入输出的基本操作,如iostream和cin/cout。接着,讲解了缺省参数、函数重载的概念,以及引用的特性,包括常引用的使用。此外,内联函数作为优化手段和auto关键字的自动类型推断也得到了阐述,最后提到了nullptr作为安全的空指针替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

命名空间

 C++中的输入和输出       

缺省参数

 函数重载

 引用

特性

常引用

使用场景

内联函数

特性

auto关键字

指针空值nullptr


命名空间

        关键字namespace,目的是对标识符进行本地化,防止命名冲突

        using namespace来展开命名空间域,展开后相当与暴露在全局,也可以指定展开,using N::a

        展开空间命名域中的命名不能与全局同时存在

        " :: "域作用限定符,能够指定访问命名空间域,例如展开命名空间N中的变量a ,N::a

        注:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

 C++中的输入和输出       

        必须要包含std 和 头文件#include <iostream> (不需要.h 结尾)

        注:如果用 using namespace std 会使得标准库全部暴露在外,一般写项目时,使用std::cout 或者 using std::cout

        std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中

        cout<<   <<endl                   cin>>

        cout标准输出对象,cin标准输入对象

        <<流插入运算符,>>流提取运算符

        cout跟cin都可以自动识别类型,比printf跟scanf更方便

缺省参数

        在函数定义和声明时,给形式参数指定一个值,调用时没有指定实参则使用指定的值

  

void Func(int a=0)
{
    cout<<a<<endl
}

int main()
{
    Func(10);//结果为10
    Func();//结果为0
    return 0;
}

全缺省:参数全部都给缺省值

void Func(int a = 10, int b = 20, int c = 30)
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}

半缺省

        函数传参时从左往右传参,缺省是从右往左缺省

void Func(int a, int b = 20, int c = 30)
{
 cout<<"a = "<<a<<endl;
 cout<<"b = "<<b<<endl;
 cout<<"c = "<<c<<endl;
}

          注: 1、如果从左往右缺省就会报错

                  2、缺省参数不能同时出现在定义跟声明

                头文件中的是声明,声明给值,定义不给值

                3、缺省值必须是常量或者全局变量

 函数重载

定义:是一种特殊的函数,C++中允许使用功能类似的同名函数,这些函数的参数部分不同(参数类型参数个数或者参数类型顺序

注:1、函数参数相同,返回类型不同时,不构成重载

        2、当同名函数存在一个没有形参时,不构成重载,调用存在歧义

返回值不同,参数不同时,也能通过编译

 

 引用

引用就是给变量取别名,不是定义新的变量,不会单独开空间,共用同一内存空间

类型 &引用变量名=引用实体

特性

        1、一个变量可以有多个别名

        2、引用定义时必须要初始化

        3、只能引用一个实体,不能引用多个实体

变量与引用类型必须相同

常引用

在引用时,权限只能平移不能放大

使用场景

1、作参数

能够避免传地址

2、作返回值

返回值无论是静态变量还是局部变量都会进行拷贝成临时变量,传引用返回能够减少拷贝

                                        ​​​​​​​        ​​​​​​​        类型转换也会产生临时变量

这里会报错的原因是因为临时变量具有常性,int& ret使得权限放大,两种解决方法

1、使用const int& ret

2、对引用作返回值,int& func()就不会产生临时变量

函数返回时,如果出了作用域,返回对象还在,则用传引用返回

                     如果出了作用域,返回对象不在了,则用传值返回

在底层汇编指令中引用跟存储地址是相似的

 

内联函数

  以inline修饰的函数叫做内联函数,在调用内联函数的地方,函数直接展开,减少函数调用开栈帧

特性

1、内联函数是一种空间换时间的方法

2、内联只是对编译器的一种建议,是否用取决于编译器,适合频繁调用短的函数(长的函数,递归函数都会被否决)

3、内联函数声明跟定义不要分开,因为函数是直接展开,找不到地址

注:debug模式下不会调用内联,不方便调试,release模式下调用内联对程序进行优化

auto关键字

auto定义变量时编译器自动匹配类型必须初始化

1、auto与指针、引用

        auto与auto*相同,引用需要加上&

int i=0;
auto a=&i;
auto* b=&i;

auto& c=i;

2、定义同一行代码

        定义同一行代码时会自动匹配第一个变量,如果后面与前面类型不同则会报错

3、不能使用的场景

        a.不能做函数参数

        b.不能直接声明数组

指针空值nullptr

在C语言中,NULL空指针可能被定义为0,在c++11中引入了nullptr

nullptr关键字,表示指针空值,不需要包含头文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值