C++入门核心用法一网打尽:C++的输入cin和输出cout | 命名空间namespace | 缺省参数(默认值) | 函数重载 | 内联inline | nullptr | 引用&

前言

相比C语言,C++新增了许多特色语法,也是面试和考试的重点。
本文必须掌握的【七大知识点:C++的输入cin和输出cout | 命名空间namespace | 缺省参数(默认值) | 函数重载 | 内联inline | nullptr | 引用&
通俗易懂,附带案例

一、C++的输入cin和输出cout

    iostream是Input Output Streaam的缩写,是【标准的输入,输出流库】,定义了【标准的输入,输出对象_cin和cout】—— 被封装在std标准命名空间
    namespace std;【C++标准库_cin/cout/endl都属于C++标准库】都放在这个叫【std命名空间】中(这个可以先不用管,第二点有讲

[1].std::cin 是 istream类的对象,他主要面向窄字符的【标准输入流_即读取,跟scanf差不多】_然后通过流提取>>进行提取,提取到std::cin中
[2].std::cout 是 ostream类的对象,他主要面向窄字符的【标准输出流_即打印,跟printf差不多然后通过流插入<<进行插入,插入到std::cout中
[3].std::endl 是一个函数,流插入输出时
(相当于插入【一个换行字符 加 刷新缓冲区】)

[4].【<<是流插入】运算符,【>>是流提取】运算符
    C++输入输出更方便,不像scanf/printf,需要手动指定格式,
    C++输入输出可以【自动识别变量类型_本质通过函数重载实现

#include <iostream>
namespace std;
int main(void)
{
   
   
   char a = 'x';
   int b = 0;
   double c = 0.0;
   
   //【自动识别类型】
   //【这些都被封装到std命名空间中,所以要通过-作用域限定符(后面有提到)指定找到】
   
   //将内容通过【标准输入流cin】和【流提取>>提取到变量中】
   std::cin >> a >> b >> c;  
  
   //将内容通过【流插入<<插入到标准输出流cout中】
   std::cout << a << b << c << std::endl;  //std::endl为一个换行字符 加 刷新缓冲区

   return 0;
}

二、命名空间namespace

[1].namespace的价值
    在C/C++中,【变量,函数 && 类】都是大量存在的,其名称将都【存在于全局作用域】中,可能会导致冲突(即同名了)
    使用【命名空间namespace关键字】的目的:是【对标识符的名称进行本地化】,以避免命名冲突 || 名字污染

[2].namespace的定义
    本质是定义一个域(这个域跟全局域各自独立)_域的作用:不同的域可以定义同名变量(每个域都起到隔离作用)
    定义命名空间,需要使用到【namespace关键字,后面跟命名空间的名字_然后接一对{}即可“{}后面不用跟分号;”】- {}中即为命名空间的成员_命名空间里面可以定义变量/函数/类型等

 namespace TEST
  {
   
   
     //定义的变量
     int rand = 10;

     //定义的函数
     int Add(int a,int b)
     {
   
   
        return a + b;
     }

     //定义的类型
     struct Node
     {
   
   
         int data;
         struct Node* next;
     }
  }
  int main(void)
  {
   
   
     //这里默认是【访问的是-全局的rand函数指针】
     printf("%p\n",rand);

     //这里通过作用域限定符'::'指定TEST命名空间中的成员(表明了隔离作用_不会因为同名而出现问题)
     printf("%d\n",TEST::rand);

     return 0;
  }

[3].C++域有:
    函数局部域,全局域,命名空间域,类域
    域影响的是:编译时语法查找一个【变量/函数/类型出处的逻辑】,还会影响【变量的生命周期(命名空间域 && 类域-不影响变量的生命周期)】

[4].namespace只能定义在全局】,当然他【还可以嵌套定义】

    namespace TEST
    {
   
   
        namespace zs
        {
   
   
            int rand = 1;
            
            int Add(int a,int b)
            {
   
   
               return a + b;
            }
        }

        namespace ls
        {
   
   
            int rand = 2;

            int Add(int a,int b)
            {
   
   
               return (a + b) * 10;
            }
        }
    }
    int main(void)
    {
   
   
       //通过作用域限定符'::'向里面找成员,嵌套的也是同理
       //【作用域限定符::的-左边是(命名空间的名字),右边是(命名空间的成员)_通过这样就能找到想要的成员了】
       printf("%d\n",TEST::zs::rand);
       printf("%d\n",TEST::ls::rand);

       printf("%d\n",TEST::zs::Add
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值