C++入门之基础语法

news2025/1/12 18:20:29

目录

一.关键字

二.命名空间

2.1命名空间域 

 2.2展开命名空间域 using namespace bit

使用using将命名空间中的某个成员引入 

2.3 头文件#include

2.3.1 头文件的展开和命名空间的展开区别

2.4 C++的标准的库命名空间std

2.5 命名空间的套娃

三. C++输入输出

3.1 流插入cout<<

3.2 C++换行endl

3.3 流提取cin>>  

四.缺省参数(默认参数)

4.1 全缺省

但是,实参只能从左往右传,不允许跳跃缺少

 4.2 半缺省 形参必须从右往左给(缺省),也不能跳跃

4.3 缺省的应用场景 

4.4 如果是在声明和定义分离的情况 

 规定:缺省值只能在声明部分给缺省值,不能同时给缺省值,否则会冲突。

五.函数的重载 

参数不同一:参数的类型不同

参数的不同二:参数的个数不同

参数的不同三:参数的顺序不同 

C++是如何实现重载的 


一.关键字

c++包含c语言的关键字,C++有63个,C语言有32个

二.命名空间

 在C语言里,如果出现定义两个名字相同的变量,或者定义一个和关键字相同的变量那么就会出现命名冲突。如:自己定义了一个变量rand,和C语言的关键字rand重复,所以会导致冲突。或者在同一个域里定义同一个变量也会导致冲突。

但是,如果是在不同的域里定义同一变量是可以的。

如下面代码,第一个输出的是局部变量x=1;第二个输出输出的是全局变量0;

这是因为这两个x不在一个作用域,第一个x是在main函数外部是全局变量,第二个x是在main函数里面是局部变量,他们的域不同,所以同名不会导致冲突。

如果要访问全局变量,那么就可以用域作用限定符 ::。

域作用限定符用法::

当限定符左部没有给东西时,默认代表访问全局变量,__::x.

当限定符左边给了作用域时,访问其作用域。

int x = 0;
int main()
{
    int x = 1;
    printf("%d\n",x);    //输出1
    printf("%d\n",::x);    //输出0
}

2.1命名空间域 

如果要在同一个域里定义同一个变量,如想在全员变量域里定义两个x。那么就需要命名空间域。

namespace (域名自己定义)

1. 全局域和局部域会影响生命周期,也会影响访问。

2. 命名空间域不会影响生命周期,只会影响访问。

3. 命名空间域,只能定义在全局。

4. 命名空间域,可以定义变量,结构体,函数,同样也需要指定作用域,命名空间也可以套命名空间。

编译器是先局部后全局 

访问命名空间域的变了,在域作用限定符的左部加上域名。就不用再进行先搜索局部,在搜索全局

namespace bit
{
    int x = 0;            //定义变量
    int add(int x,int y){}    //定义函数、
    
    
    
}
namespace bit2 
{
    int x = 1;
}

int main()
{

    printf(“%d\n”,bit::x);
    printf(“%d\n”,bit1::x);
    printf(“%d\n”,bit::add(1,2));
    

}

特殊情况 

 对于定义结构体,需要在struct后面加域作用限定符。

struct bit1::node phead;

 2.2展开命名空间域 using namespace bit

如果不用using展开,那么在使用这个命名空间域里的变量时就需要用域作用限定符,指定作用域。

但是用using展开,就是相当于将命名空间域的权限放开,相当于将变量等的作用域开放到全局域,不需要::域作用限定符,也不会要指定命名空间。

 

using namespace bit;
int main()
{
    struct QNode node1;//不需要用::限定
}

使用using将命名空间中的某个成员引入 

using N::b;
int main()
{
    printf("%d\n",b);
    printf("%d\n",N::a);
    return 0; 
}

2.3 头文件#include<iostream>

2.3.1 头文件的展开和命名空间的展开区别

头文件的展开是应为编译器只会编译.c或者.cpp文件,所以要将头文件的内容拷贝到 .c或者.cpp文件,叫头文件的展开。

命名空间的展开的意思是:将命名空间的权限放开,让其内容相当于放入全局域,不用::限定符

2.4 C++的标准的库命名空间std

        若要用这个std空间域的东西,可以用两种方法。

        方法一:使用展开 using namespace std;//这个方法在实际开发中不推荐

        方法二:用::指定std的作用域。

        方法三: 只展开命名空间里的某几个变量,using std::count;

2.5 命名空间的套娃

例如如果在实际开发中,一个项目的代码全放在一个命名空间里如bit,那么难免会有函数,变量等充满,那么可以按名字子啊定义一个命名空间。

namespace bit
{
    namespace pyf
    {
        void push()
        {
             count<<"pyf"<<endl;
        }
       
    }
    namespace ls
    {
        void push()
        {
            count<<"ls"<<endl;
        }
            
    }
}

int main()
{
    bit::pyf::push();
    bit::ls::push();
}

 在主函数里调用时,要用两次域作用限定符。

三. C++输入输出

1. <<单独使用是左移符,与C语言一样

2. 如果和cout一起使用,cout<< 是流插入

3.1 流插入cout<<

        C++可以自动识别类型的 

        如cout<<"hello world":就是将"hello world"流入控制台console

3.2 C++换行endl

        C++可以写\n,最好写endl

         cout<<"hello world"<<endl

3.3 流提取cin>>  

四.缺省参数(默认参数)

4.1 全缺省

在形参后面默认一个参数,在实参没有传参时有个默认值 

缺省参数的好处是,可以实参只传1个2个,或者不传

 

但是,实参只能从左往右传,不允许跳跃缺少

 不允许跳跃,如

 4.2 半缺省 形参必须从右往左给(缺省),也不能跳跃

 

4.3 缺省的应用场景 

一. 

我们知道顺序表C语言就需要遇到扩容问题,但是C语言是规定死的扩容一定的量,如扩容100个,但是只需要十个,那么就会导致90个空间浪费。

那么我们C++里面可以给参数n缺省一个值4(可以换其他),那么在入栈时,直接入多少空间的元素,那么就可以开辟多少空间。

 

4.4 如果是在声明和定义分离的情况 

 规定:缺省值只能在声明部分给缺省值,不能同时给缺省值,否则会冲突。

 

五.函数的重载 

C语言是不能出现同名函数的。

C++是允许同名函数的,但是不允许参数相同。

而且C++可以自动匹配参数类型。

参数不同一:参数的类型不同

参数的不同二:参数的个数不同

 

参数的不同三:参数的顺序不同 

C++是如何实现重载的 

C语言不支持重载的原因是:在链接这个阶段:使用函数名取寻找地址的,所以如果函数名相同,那么会区分不开。

C++:有一套函数名修饰规则,在名字中引入参数,那么就可以区分名字。 

 例如,下面两个同名函数

void f(int a,char b)
void f(char b,int a)

引入参数规则后:

call _Z1fic(?) //_Z1是默认的,f是函数名,ic是两个参数的类型的首字母缩写
call Z1fci(?)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线性代数:逆矩阵

目录 伴随阵 逆矩阵 证明&#xff1a;AA* A*A |A|E 证明&#xff1a;|A| 0 > |A*| 0 伴随阵 逆矩阵 证明&#xff1a;AA* A*A |A|E 证明&#xff1a;|A| 0 > |A*| 0

项目管理该考哪个证书❓NPDP还是软考❓

有小伙伴在纠结是要考NPDP认证呢还是考软考呢❓ 今天小编要给大家好好说说NPDP认证❗️ &#x1f4a1;NPDP全称New Product Development Professional&#xff0c;也就是产品经理国际资格认证。 &#x1f525;NPDP是国际公认的为一的新产品开发专业认证&#xff0c;是集理论、方…

JVM系列-2.字节码文件详解

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理&#x1f525;如果感觉博主的文…

(超详细)6-YOLOV5改进-添加ECA注意力机制

1、在yolov5/models下面新建一个EfficientChannelAttention.py文件&#xff0c;在里面放入下面的代码 代码如下&#xff1a; import torch, math from torch import nnclass EfficientChannelAttention(nn.Module): # Efficient Channel Attention moduledef __ini…

uniCloud uni-id体系的使用

目录 简介 uni-id导入和配置 用户表与文章表关联foreignKey 字段级权限控制 指定数据集权限控制 权限规则的变量和运算符 简介 uni-id已完成的功能&#xff1a; 注册、登录、发送短信验证码、密码加密保存、修改密码、忘记密码、头像管理、token管理、rbac权限角色体系、…

CVPR 2023 Hybrid Tutorial: All Things ViTs之mean attention distance (MAD)

All Things ViTs系列讲座从ViT视觉模型注意力机制出发,本文给出mean attention distance可视化部分阅读学习体会. 课程视频与课件: https://all-things-vits.github.io/atv/ 代码: https://colab.research.google.com/github/all-things-vits/code-samples/blob/main/probing/m…

2024年【河北省安全员B证】最新解析及河北省安全员B证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 河北省安全员B证最新解析是安全生产模拟考试一点通生成的&#xff0c;河北省安全员B证证模拟考试题库是根据河北省安全员B证最新版教材汇编出河北省安全员B证仿真模拟考试。2024年【河北省安全员B证】最新解析及河北省…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-热门标签推荐显示实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

【Spring 篇】MyBatis注解开发:编写你的数据乐章

欢迎来到MyBatis的音乐殿堂&#xff01;在这个充满节奏和韵律的舞台上&#xff0c;注解是我们编写数据乐章的得力助手。无需繁琐的XML配置&#xff0c;通过简单而强大的注解&#xff0c;你将能够轻松地与数据库交互。在这篇博客中&#xff0c;我们将深入探讨MyBatis注解开发的精…

5G_射频测试_发射机测量(四)

6.2 Base station output power 用于测量载波发射功率的大小&#xff0c;功率越大小区半径越大但是杂散也会越大 载波功率&#xff08;用频谱仪测&#xff09;天线口功率&#xff08;用功率计测&#xff09;载波功率是以RBW为单位的filter测量的积分功率不同带宽的多载波测试时…

一文读懂「RAG,Retrieval-Augmented Generation」检索增强生成

Retrieval-Augmented Generation&#xff08;RAG&#xff09;作为机器学习和自然语言处理领域的一大创新&#xff0c;不仅代表了技术的进步&#xff0c;更在实际应用中展示了其惊人的潜力。 RAG结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#…

项目解决方案:多地医馆的高清视频监控接入汇聚联网

目 录 一、背景 二、建设目标及需求 1.建设目标 2.现状分析 3.需求分析 三、方案设计 1.设计依据 2.设计原则 3.方案设计 3.1 方案描述 3.2 组网说明 四、产品介绍 1.视频监控综合资源管理平台介绍 2.视频录像服务器和存储 2.1概述 2.2存储设计 …

蓝桥杯省赛无忧 编程9

#include<bits/stdc.h> using namespace std; int main() {int n,k,ans0;cin>>n>>k;while(n--){int a;cin>>a;ansa&1;}if(ans&1) cout<<"Alice"<<\n;else cout<<"Bob"; return 0; }这个游戏是基于数…

软件工程应用题汇总

绘制数据流图(L0/L1/L2) DFD/L0&#xff08;基本系统模型&#xff09; 只包含源点终点和一个处理(XXX系统) DFD/L1&#xff08;功能级数据流图&#xff09;在L0基础上进一步划分处理(XXX系统) 个人理解 DFD/L2&#xff08;在L1基础上进一步分解后的数据流图&#xff09; 数据…

3.php开发-个人博客项目输入输出类留言板访问IPUA头来源

目录 知识点 : 输入输出 配置环境时&#xff1a; 搜索框&#xff1a; 留言板&#xff1a; 留言板的显示&#xff08;html&#xff09;&#xff1a; php代码显示提交的留言&#xff1a; 写入数据库 对留言内容进行显示&#xff1a; php全局变量-$_SERVER 检测来源 墨…

【复现】Hytec Inter HWL 2511 SS路由器RCE漏洞_25

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Hytec Inter HWL 2511 SS是日本Hytec Inter 公司的一款工业级 LTE 路由器&#xff0c;可用于远程数据传输&#xff0c;例如收集传…

网络安全(初版,以后会不断更新)

1.网络安全常识及术语 资产 任何对组织业务具有价值的信息资产&#xff0c;包括计算机硬件、通信设施、IT 环境、数据库、软件、文档 资料、信息服务和人员等。 漏洞 上边提到的“永恒之蓝”就是windows系统的漏洞 漏洞又被称为脆弱性或弱点&#xff08;Weakness&#xff09;&a…

class_15:虚函数

#include <iostream> #include <string> using namespace std;//基类,父类 class Vehicle{ public:string type;string contry;string color;double price;int numOfWheel;virtual ~Vehicle(){};//类中有虚函数&#xff0c;析构函数一般也写成虚函数virtual voi…

第135期 一周游历(上)(20240120)

数据库管理135期 2024-01-20 第135期 一周游历(上)&#xff08;20240120&#xff09;1 PolarDB开发者大会2 工作3 Oracle甲骨文4 Oracle ACE总结 第135期 一周游历(上)&#xff08;20240120&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle AC…

基于Servlet建立表白墙网站

目录 一、设计思想 二、设计表白墙页面&#xff08;前端--VSCode&#xff09; 1、效果图 2、html部分&#xff08;网页上有哪些内容&#xff09; 3、css部分&#xff08;页面内容的具体样式&#xff09; 4、js部分&#xff08;页面行为&#xff09; 三、借助Servlet实现客…