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

相关文章
|
3月前
|
存储 安全 编译器
c++入门
c++作为面向对象的语言与c的简单区别:c语言作为面向过程的语言还是跟c++有很大的区别的,比如说一个简单的五子棋的实现对于c语言面向过程的设计思路是首先分析解决这个问题的步骤:(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。但对于c++就不一样了,在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:(1)黑白双方,这两方的行为是一样的。(2)棋盘系统,负责绘制画面。
44 0
|
7月前
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
6月前
|
存储 分布式计算 编译器
C++入门基础2
本内容主要讲解C++中的引用、inline函数和nullptr。引用是变量的别名,与原变量共享内存,定义时需初始化且不可更改指向对象,适用于传参和返回值以提高效率;const引用可增强代码灵活性。Inline函数通过展开提高效率,但是否展开由编译器决定,不建议分离声明与定义。Nullptr用于指针赋空,取代C语言中的NULL。最后鼓励持续学习,精进技能,提升竞争力。
|
11月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
123 2
C++入门12——详解多态1
|
11月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
162 1
|
11月前
|
存储 C++ 容器
C++入门9——list的使用
C++入门9——list的使用
89 1
|
11月前
|
C语言 C++ 容器
C++入门7——string类的使用-1
C++入门7——string类的使用-1
79 0
|
11月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
203 1
|
11月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
174 0
C++入门6——模板(泛型编程、函数模板、类模板)