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

相关文章
|
1月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
39 2
C++入门12——详解多态1
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
27 3
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
30 2
|
1月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
81 1
|
1月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
70 1
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
20 1
|
1月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
34 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
46 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
23 0
|
1月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
27 0