初识C++

一·  namespace关键字(解决C语言中命名冲突的问题):编译时,使用的变量或函数得找到它的定义,当同一块域内有两个相同的名字编译器就不知道调用谁,从而引发冲突

这里rand函数与rand变量重名引发的命名冲突

C++中的域:局部域,全局域,命名空间域,类域。将域进行隔离就可以解决命名冲突的问题

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员,成员可以是函数,变量,类型。

注意:命名空间只能定义在全局中,但可以进行嵌套

2  域作用限定符(::)默认去全局域查找,在前面加上域名就去指定的地方查找

#include <stdio.h>
#include <stdlib.h>

namespace git

    namespace bit
    {
        int hp(int a,int b)
        {
            return a + b;
        }
    }
    namespace pit
    {
        struct hp
        {
            int pg;
            int bg;
        };
    }
}

int a = 3;

int main()
{
    struct git::pit::hp  ad;
    ad.bg = 90;
    printf("%d\n",ad.bg);
    printf("%d\n", git::bit::hp(2,2));
    return 0;
}

注意:在指定结构体命名空间时应把域指定符放在类型名前面。

3 相同名字的命名空间域会被看成同一个名字空间域,而不会引发命名冲突(C++的标准库封装在std的命名空间里)

关键字2 using(用于展开命名空间,一般不推荐使用)

例1 全部展开命名空间

例2  展开部分命名空间

二·C++的输入输出

<iostream>标准输入输出流的库文件

1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件 以及按命名空间使用方法使用std。

2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。

3. 是流插入运算符,>>是流提取运算符。

4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。(只有内存里才有原反补,浮点存储等等,其他都是把类型强转成字符型在输出)

5. 实际上cout和cin分别是ostream和istream类型的对象,>>和也涉及运算符重载等知识, 这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。

三· 缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参(相当于给形参一个初始化)。

缺省参数又分全缺省和半缺省

半缺省

1·半缺省参数必须从右往左依次来给出,不能间隔着给

2. 缺省参数不能在函数声明和定义中同时出现

注意:半缺省没有设置缺省值的必须传入实参

函数声明和定义分离时,规定在函数定义处给缺省值,不能在声明处给缺省值,避免冲突

四·函数重载

概念:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型 不同的问题。

但要注意一个坑

如:

这两个函数构成函数重载但是在调用f1()时,编译器不知道调用那一个,应尽量避免歧义(不要这样写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值