C++入门-day01

一、认识C++

C++融合了三种不同的编程方式

  • C代表的过程性语言
  • 在C基础上添加的类、结构体puls代表的面向对象语言
  • C++模板支持泛型编程

C++完全兼容C的特性

Tips:侯捷老师提倡的**Modren C++**是指C++11、C++14、C++17和C++20这些新标准所引入的一系列新特性和改进。在我们练习的时候也应当去使用C++11的语法。

1. #include 头文件

在C++11中头文件是这个样子

#include <iostream>

替代了在C中我们经常使用的

#include <stdio.h>

如果需要使用标准C中的库,可以这样:

#include <cstdio>

2. 主函数

跟C一样

int main(){

return 0;

}

二、命名空间

命名空间主要是解决在大型项目中,函数,变量名冲突的问题
如下图所示,如果没有命名空间,命名相同的变量和函数,是会冲突的,而命名空间就好像一个隔离容器 ,如果要使用A中的sort函数只需,A::sort();即可。

这里的 :: 是叫域作用操作符

看个代码:

cpp 复制代码
#include<iostream>
namespace yy{
    int a=0;
    int big(int a,int b){
        return a>b?a:b;
    }
}
int main(){
    std::cout<<yy::a<<std::endl;
    std::cout<<yy::big(30,17)<<std::endl;
    return 0;
}

按照上面的理解,你一定已经知道yy::a 和 **yy::big(30,17)**的意思了,

但是对于std::cout<< <<std::endl,一定会不知所云。

回忆C语言中,一个程序只要运行就会创建的三个流:

  • stdin - 标准输入流(键盘)
  • stdout - 标准输出流(屏幕)
  • stderr - 标准错误流(屏幕)

而这里std::cout ,你或许已经猜到了,std 是个命名空间,cout应该是定义在std里面的一个东西。

事实上,std是C++的标准命名空间,C++标准程序库中的所有标识符都被定义在std中

而cout就是C++的标准输出流

你可以把<<理解为流动方向,把yy::a的值流向标准输出流,也就是在屏幕中打印出来,而<<std::endl 就是把std中的endl也流到标准输出流中。endl就是换行加刷新缓冲区的意思
简而言之, std::cout<<yy::a<<std::endl,与C中 printf("%d\n",a) 有异曲同工之妙。
此时,你会觉得,打印一个东西这么麻烦,还要打这么多字符,

其实,可以简化成这样。

cpp 复制代码
cout<<yy::a<<endl

只需在你主函数之前声明你要使用这个命名空间,有两种实现方式,推荐第一种。

cpp 复制代码
using std::cout
using std::endl
cpp 复制代码
using namespace std

注:

  • 命名空间只能全局范围内定义
  • 命名空间可以嵌套定义
相关推荐
by209992 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河2 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮2 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻2 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble3 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长3 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall3 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
码流子4 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
雪落漂泊4 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
云创智城-yuncitys4 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot