C++初阶------------------入门C++(一)

简介: C++初阶------------------入门C++(一)

命名空间(namespace)

在我们学习C语言的过程中,如果我们命名一些和库函数名字相同的变量或者函数,VS编译器就会报错,怎么解决这个问题呢?C++语言就推出了一个关键字

namespace

这个关键字的作用就是解决命名冲突的

未使用关键字:

#include<stdio.h>
#include<stdlib.h>
int rand = 0;
int main()
{
  printf("%d", rand);

  return 0;
}

是会报错的,因为命名和库函数rand冲突了,我们在后面写的代码越多,就越容易命名冲突,

使用关键字:

#include<stdio.h>
#include<stdlib.h>
namespace ncon
{
  int rand = 0;
}
int main()
{
  printf("%d", ncon::rand);

  return 0;
}

::

这个符号叫域作用限定符

就是告诉VS编译器rand这个变量要在ncon命名的空间里面找,否则是找不到这个rand的

在命名空间里面可以定义函数、结构体、变量、枚举…等,

#include<stdio.h>
#include<stdlib.h>
namespace ncon
{
  int rand = 0;
  int Add(int a, int b)
  {
    return a + b;
  }
  typedef struct numnam
  {
    int a;
    int b;
  }numname;
}
int main()
{
  printf("%d ", ncon::rand);
  int count = ncon::Add(1, 2);
  printf("%d ", count);
  struct ncon::numnam num = { 10,20 };
  printf("%d %d", num.a, num.b);
  return 0;
}

注意一下,结构体的写法是struct关键字在 最前面

命名空间里面嵌套命名空间

#include<stdio.h>
#include<stdlib.h>
namespace ncon
{
  namespace con
  {
    int nums = 10;
  }
}
int main()
{
  printf("%d ",ncon::con::nums);
  return 0;
}

命名空间可以嵌套命名空间,无限套娃

命名空间的合并

我们在一个源文件中可以多个位置命名空间相同的名字,是不会冲突的,会合并成一个命名空间

头文件:

#include<stdio.h>
#include<stdlib.h>
namespace ncon
{
  typedef struct numnam
  {
    int a;
    int b;
  }numname;
}

目标文件.c

#include"day1_1.h"
using namespace ncon;
namespace ncon
{
  int Add(int a, int b)
  {
    return a + b;
  }
}
int main()
{

  int count = Add(1, 2);
  printf("%d ", count);
  struct ncon::numnam num = { 10,20 };
  printf("%d %d ", num.a, num.b);

  return 0;
}

有人就会发现下面这句代码

using namespace ncon;

这句代码想表达的意思就是

这行代码是C++中的语法,意思是引入命名空间 ncon 中的所有内容,使得在代码中可以直接使用该命名空间中的成员而不需要加上前缀

注意:这种方式不提倡,特别是在项目里会造成不必要的麻烦,所以日常练习可以展开

std:是C++官方库定义的命名空间

但是有时候真的很麻烦,会写很多不必要的前缀

所以我们可以指定展开

using std::cout;
using std::endl;

第一个c++代码

#include<iostream>
int main()
{
  std::cout << "hello world";
  printf("hello world");
  return 0;
}

<< : 流插入

如果要写入一些标识符,如\n

#include<iostream>
int main()
{
  std::cout << "hello world\n" << "hello " << "11111 " << "\n";
  printf("hello world");
  return 0;
}

可以写多个 << 进行拼接

但是一般不会这样写,会写成是std::endl

#include<iostream>
int main()
{
  std::cout << "hello world"  << std::endl << "hello " << "11111 " << std::endl;
  printf("hello world");
  return 0;
}

<< :流提取

#include<iostream>
using std::cout;
using std::endl;
using std::cin;

int main()
{
  int a = 10;
  int b = 20;
  cin >> a >> b;
  cout << a << endl << b;
  return 0;
}

std:: cin :输入

std::cout : 输出


C++初阶------------------入门C++(二)

https://developer.aliyun.com/article/1499032

相关文章
|
5天前
|
C++ 存储 编译器
|
5天前
|
存储 算法 C语言
【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]
【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]
22 0
|
5天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
19 0
|
4天前
|
编译器 C++
C++入门(命名空间)
C++入门(命名空间)
|
5天前
|
C++ 编译器 程序员
C++ 从零基础到入门(3)—— 函数基础知识
C++ 从零基础到入门(3)—— 函数基础知识
|
5天前
|
C++ 存储
C++从零基础到入门(2)—— (if、switch、for、while语句)
C++从零基础到入门(2)—— (if、switch、for、while语句)
C++从零基础到入门(2)—— (if、switch、for、while语句)
|
5天前
|
编译器 C语言 C++
C++入门基础-2
C++入门基础
12 3
|
5天前
|
C语言 C++
C++入门基础-1
C++入门基础
18 1
|
5天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
36 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性