初识C++

一、C++输入&输出
(1) C++标准明确提出不支持.h的头文件,为了和C区别开,也为了正确使用命名空间,C++规定头文件不使用后缀.h;
(2)当使用 iostream.h 时,相当于在C中调用库函数,使用的是全局命名空间;当使用 iostream 时,该头文件没有定义全局命名空间,必须使用 namespace std,这样才能正确使用cout和 cin.

#include<iostream>    //因为<iostream>里面没有定义全局命名空间,故使用 namespace std

using namespace std;  //std:标准命名空间

int main()
{
    int a = 0;
    int b = 0;
    cin >> a >> b;           //cin:标准输入流对象; >>:输入操作符、;
    cout << a + b << endl;  //cout:标准输出流对象; <<:输出操作符;endl:换行操作符
    return 0;
}

二、命名空间
(1)在C++中,变量、函数和类都大量存在,这些名称都存在于全局命名空间中,会导致很多冲突;
(2)使用命名空间的目的是对标识符的名称进行本地化,解决命名冲突的问题,namespace就是为了解决这个问题。
命名空间的定义:

//普通的命名空间
namespace N1
{
    int a = 10;
    int Add(int left, int right)
    {
        return left + right;
    }
}

//嵌套的命名空间
namespace N2
{
    int a = 10;
    int b = 20;
    int Add(int left, int right)
    {
        return left + right;
    }

    namespace N3
    {
        int c = 30;
        int d = 40;
        int Sub(int left, int right)
        {
            return left - right;
        }
    }
}

//同一个工程中允许存在多个相同名称的命名空间,编译器最终会合成同一个命名空间
namespace N1
{
    int a = 10;
    int Mul(int left, int right)
    {
        return left * right;
    }
}

//没有名称的命名空间
namespace
{
    int a = 10;

    int Div(int left, int right)
    {
        if (0 == right)
            exit(0);
        return left / right;
    }
}

·一个命名空间就定义了一个新的作用域,命名空间中所有的内容都局限于该命名空间中;
·没有名称的命名空间,它的成员只在声明该命名空间的文件中可以访问,访问时不需加命名空间名称,对其他文件该命名空间中内容不可见。

命名空间的使用:

::两个冒号代表的是:作用域解析符;
在使用命名空间的变量时,必须在作用域解析符前加上命名空间名字,后面加上要用的变量名。
#include<iostream>

using namespace std;

namespace N
{
    int a = 10;
    int b = 20;
    int Add(int left, int right)
    {
        return left + right;
    }
    int Sub(int left, int right)
    {
        return left - right;
    }
}

using N::b;
using namespace N;
int a = 30;                 //定义全局变量a
int main()
{
    int a = 2;              //定义局部变量a
    cout << a << endl;      //变量名前不加任何作用域解析符,代表局部变量
    cout << ::a << endl;    //变量名前加上作用域解析符,代表全局变量
    cout << N::a << endl;   //命名空间名加作用域解析符加变量名,代表该命名空间中的变量
    cout << b << endl;
    Add(10, 20);
    return 0;
}

下面是代码运行结果
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41289858/article/details/81361540