【C++入门 二 】学习使用C++命名空间及其展开

简介: 【C++入门 二 】学习使用C++命名空间及其展开

1. C++第一个小程序


下面这段代码有两个特性

1、io流

2、命名空间

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


2.命名空间


2.1命名冲突

命名冲突产生的原因:

1.我们自己写的和库冲突

2.我们互相之间冲突

在上面的代码中,我们定义的rand和库里面的rand函数命名冲突了


所以就要学习下面的命名空间了

:: 域作用限定符


2.2 命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的

2.2.1 命名空间定义

①正常定义和使用命名空间

#include <stdio.h>
#include <stdlib.h>
namespace YYQ
{
  int rand = 0;
  int Add(int left, int right)
  {
    return left + right;
  }
  
    struct Node
  {
    struct Node* next;
    int val;
  };
}
int main()
{
  printf("hello world\n");
  printf("%p\n", rand);//默认访问全局的
  printf("%d\n", YYQ::rand); 
  YYQ::Add(1, 2);
  struct YYQ::Node node//结构体这里的指定有些不太一样
  return 0;
}


②命名空间可以嵌套

#include <stdio.h>
#include <stdlib.h>
namespace YYQ
{
  int rand = 0;
  namespace yyq
  {
    int rand = 2;
  }
  int Add(int left, int right)
  {
    return left + right;
  }
    struct Node
  {
    struct Node* next;
    int val;
  };
}
int main()
{
  printf("hello world\n");
  printf("%p\n", rand);//默认访问全局的
  printf("%d\n", YYQ::rand); 
  printf("%d\n", YYQ::yyq::rand);
  YYQ::Add(1, 2);
  return 0;
}


同一个文件多个位置同名的命名空间或者多个文件中同名的命名空间会被合并为同一个


2.2.2.命名空间的展开

方式1(直接展开)
using namespace std;
  //直接展开C++ std库 

如果在展开的命名空间和全局中都没找到,就会报错


方式2(指定展开)

我们这里 指定展开 std里面的 coutendl ;

#include <iostream>
using std::cout;
using std::endl;
int main()
{
  //流插入
  std::cout << "hello world\n";
  int a = 10;
  double b = 11.11;
  std::cout << a << "\n";//方式1换行(本质C语言方式)
  std::cout << a << "\n" << b<<"\n";//方式2 
  std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
  std::cout << b;
  return 0;
}


3.C++输入&输出


①输出

#include <iostream>
int main()
{
  //流插入
  std::cout << "hello world";
  int a = 10;
  double b = 11.11;
  std::cout << a;
  std::cout << b;
  return 0;
}

上面的输出没有换行,下面有几种换行的方式

#include <iostream>
int main()
{
  //流插入
  std::cout << "hello world\n";
  int a = 10;
  double b = 11.11;
  std::cout << a << "\n";//方式1换行(本质C语言方式)
  std::cout << a << "\n" << b<<"\n";//方式2 
  std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
  std::cout << b;
  return 0;
}

②输入

#include <iostream>
using std::cout;
using std::endl;
int main()
{
  //流插入
  std::cout << "hello world\n";
  int a = 10;
  double b = 11.11;
  std::cout << a << "\n";//方式1换行(本质C语言方式)
  std::cout << a << "\n" << b<<"\n";//方式2 
  std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
  
  //cin相当于C语言中的scanf
  std::cin >> a >> b;//指定展开std,找cin
  std::cout << a;
  std::cout << b;
  return 0;
}


相关文章
|
11天前
|
存储 安全 编译器
c++入门
c++作为面向对象的语言与c的简单区别:c语言作为面向过程的语言还是跟c++有很大的区别的,比如说一个简单的五子棋的实现对于c语言面向过程的设计思路是首先分析解决这个问题的步骤:(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。但对于c++就不一样了,在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:(1)黑白双方,这两方的行为是一样的。(2)棋盘系统,负责绘制画面。
|
3月前
|
存储 分布式计算 编译器
C++入门基础2
本内容主要讲解C++中的引用、inline函数和nullptr。引用是变量的别名,与原变量共享内存,定义时需初始化且不可更改指向对象,适用于传参和返回值以提高效率;const引用可增强代码灵活性。Inline函数通过展开提高效率,但是否展开由编译器决定,不建议分离声明与定义。Nullptr用于指针赋空,取代C语言中的NULL。最后鼓励持续学习,精进技能,提升竞争力。
|
4月前
|
存储 缓存 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 的奥秘,从入门到高效编程
|
5月前
|
C++ 开发者
C++学习之继承
通过继承,C++可以实现代码重用、扩展类的功能并支持多态性。理解继承的类型、重写与重载、多重继承及其相关问题,对于掌握C++面向对象编程至关重要。希望本文能为您的C++学习和开发提供实用的指导。
96 16
|
6月前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
142 4
2023/11/10学习记录-C/C++对称分组加密DES
|
8月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
199 6
|
4月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
11天前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
|
11天前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。

热门文章

最新文章