C++入门(一)

news2024/9/21 22:57:44

目录

一.   关键字

二.   命名空间

三.   输入&输出

1.输出

2.输入

四.   缺省参数

1.全缺省参数

 2.半缺省参数

五.   函数重载

1.类型

 2.原理


一.   关键字

简单了解一下都有哪些关键字



二.   命名空间

在c语言的学习之中,我们知道,在同一个作用域中,我们无法使用相同的名字进行命名。也无法使用库中的名字进行命名。

而在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存
在于全局作用域中,很有可能会导致冲突。而我们可以使用命名空间来解决这个问题,使用命名空间的目的是对标识符的名称进行本地化,

以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

namespace szt
{

}

例如,我们可以定义一个名为szt的命名空间

而命名空间中可以定义变量/函数/类型

namespace szt
{
    int rand=10;//变量

    int add(int a,int b)//函数
    {
        return a+b;
    }

    struct sList//类型
    {
        int cal;
        struct sList* next;
    }
}

同时,命名空间可以嵌套使用

namespace szt1
{
    int rand=10;

    namespace szt2
    {

    }
}

而在同一个工程之下,同名的命名空间会被合并。例如头文件和源文件中的同名命名空间。

而若是想要使用命名空间的成员,有3种方法

1.前面加命名空间名称以及作用域限定符

namespace szt
{
    int a=10;//变量

    int add(int a,int b)//函数
    {
        return a+b;
    }

    struct sList//类型
    {
        int cal;
        struct sList* next;
    };
}

int main()
{
    struct szt::sList SL;
    printf("%d\n",szt::a);
}

2.使用using引入某个成员

using szt::a;

int main()
{
    printf("%d\n",a);
}

3.使用using namespace 命名空间名称 引入

using namespace szt;

int main()
{
    printf("%d",a);
}

而第一种方法能够做到最好的隔离,但使用较为麻烦

第二种方法也能做到较好的隔离,在使用一些常用的成员时较为方便

第三种方法最方便,但会导致隔离失效,引发一些问题

例如在我们常见的一些代码中,在引用输入输出流的头文件后

#include<iostream>

往往会使用第三种方法来展开一个std命名空间(C++库的实现定义)

using namespace std;

这种方法,在我们自己练习时会很方便,但若是在公司中进行大的项目的实现时,不要这样使用。



三.   输入&输出

1.输出

我们可以先实现一下我们的老朋友Hello world

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

 

在其中,iostream 和std 我们在上面已经提到过,这里补充一点,早期我们直接引用头文件即可

#include<iostream.h>

而后来,为了与c语言进行区别,我们便如上述代码样式进行头文件的引用。

cout用于输出,<<为流插入运算符,endl表示换行输出

因此,我们也可以这样

cout<<"Hello world!!!\n";

而当输出存在参数时,cout能做到自动识别变量类型,并识别浮点数的小数位

#include<iostream>
using namespace std;
int main()
{
    float a=1.23;  
    char b='b';
    cout<<a<<"  "<<b<<endl;
    return 0;
}


2.输入

在C++中,我们使用cin进行输入,同样,cin也能自动识别变量类型

int main()
{
    int a;
    double b;
    char c;    
    cin>>a;
    cin>>b>>c;
    return 0;
}

而>>是流提取运算符



四.   缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

而缺省参数分为全缺省参数,半缺省参数

1.全缺省参数

字面意思,便是所有参数都有缺省值

void print(int a = 10, int b = 20, int c = 30)
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

int main()
{
    print();
    print(1);
    print(1,2);
    print(1,2,3);
    return 0;
}

而在存在部分的参数时,严格遵循从左向右的原则

无法做到c存在参数而a,b没有参数的类似的情况

print(1, ,3);//error

 2.半缺省参数

其实就是部分缺省

而在半缺省参数中,我们必须严格遵循从右往左依次给出

void print(int a, int b, int c = 30)//right
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

void print(int a = 10, int b, int c = 30)//error
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

注意:缺省值必须是常量或者全局变量 

缺省参数不能在函数声明和定义中同时出现,而别人在查看代码功能时,往往会去首先查看头文件来了解各个函数的功能,所以我们一般将缺省参数放在函数的声明之中,也就是头文件中。



五.   函数重载

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。

1.类型

参数类型不同

int Add(int left, int right)
{
    cout << "int Add(int left, int right)" << endl;
    return left + right;
}

double Add(double left, double right)
{
    cout << "double Add(double left, double right)" << endl;
    return left + right;
}

int main()
{
    cout<<Add(1, 2)<<endl;
    cout << Add(1.1,2.2) << endl;
    return 0;
}

参数个数不同

int Add(int num1, int num2, int num3)
{
    cout << "int Add(int num1, int num2, int num3)" << endl;
    return num1+num2+num3;
}

int Add(int num1, int num2)
{
    cout << "int Add(int num1, int num2)" << endl;
    return num1+num2;
}

int main()
{
    cout<<Add(1, 2)<<endl;
    cout << Add(1,2,3) << endl;
    return 0;
}

 

参数类型顺序不同

void f(int a, char b)
{
    cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
    cout << "f(char b, int a)" << endl;
}

int main()
{
    f(1, 'a');
    f('a', 1);
    return 0;
}

而单纯的返回值不同无法作为函数重载的条件。

 2.原理

不会,之后再补充

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

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

相关文章

js内置对象

包装类 <script>/*var anew Number(123);var bnew String("慕课网");var cnew Boolean(true);*/var a 123;var b 慕课网;var c true;console.log(a);console.log(typeof a);console.log(b);console.log(typeof b);console.log(c);console.log(typeof c); &…

WEB页面请求的过程

WEB页面请求的过程 需求&#xff1a;学校网络里的电脑访问到Google网络中的web服务器中 1、电脑通过物理网线接入校园网中 2、电脑运行DHCP协议&#xff0c;从本地的DHCP服务器获取一个IP地址&#xff08;DHCP服务器一般由网关路由器充当&#xff09; 获取过程&#xff1a; …

盛水最多的容器 + 接雨水(相向双指针)

目录 一、盛水最多的容器 二、 接雨水 2.1 - 前后缀分解 2.2 - 相向双指针 一、盛水最多的容器 题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使…

BPM结合低代码,为企业信息化建设添砖加瓦

编者按&#xff1a;业务流程管理和低代码平台结合的意义是什么&#xff1f;能为用户带来什么&#xff1f;本文了分析了低代码平台和BPM结合的意义&#xff0c;并进一步介绍了低代码BPM软件开发平台的应用场景。关键词&#xff1a;嵌入式流程激活&#xff0c;端到端流程打通&…

【ES6】模块化语法(默认、按需导入import导出export的操作)

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;ES6模块化语法(默认、按需导入导出的操作) 本文速览&#xff1a; 目录 本文速览&#x…

Word图片自动编号,调整图片顺序自动更新图片编号,引用该图片的地方也对应更新

Word图片自动编号&#xff0c;调整图片顺序自动更新图片编号&#xff0c;引用该图片的地方也对应更新1.软件环境⚙️2.问题描述&#x1f50d;3.解决方法&#x1f421;3.1.为图片添加题注&#xff0c;实现图片自动编号3.2.设置编号格式&#xff08;可选&#xff09;3.3.在文中引…

参数服务器的参数设置

#! /usr/bin/env python #condingutf-8 import rospy if __name__ __main__: #初始化节点 rospy.init_node(param_set) #新增参数 rospy.set_param(type_p,xiaohuangche) rospy.set_param(radius_p,0.15) #修改参数 rospy.set_param(radius_p,0.2…

我的【二哈喇子!】周岁生日

文章目录回看CSDN的2022新年新Flag回看CSDN的2022 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 各位朋友大家好&#xff0c;我是二哈喇子&#xff01;谢谢你现在在阅读这篇文章。 二零二二年一月二十一日&#xff0c;我的小二哈"出生"了&#x…

2022年报表开发工具Stimulsoft产品迭代汇总

Stimulsoft Reports是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

AC7811-BLDC无感控制代码详解

BLDC控制框图 BLDC 的控制电路对电机转子位置信号进行逻辑变换后产生脉宽调制 PWM 信号&#xff0c;驱动逆变器的功率开关管&#xff0c;从而控制 BLDC 电机各相绕组按一定顺序工作&#xff0c;在电机气隙中产生跳跃式旋转磁场。BLDC 转子旋转时&#xff0c;每转过 60&#xf…

云游戏三重门:体验、生态和硬件

配图来自Canva可画 如今硬件已经成为制约游戏体验的最主要因素之一。而云游戏的提出&#xff0c;则被看做是解决这种矛盾的其中一种重要手段。对于玩家来说&#xff0c;云游戏意味着既不再需要价格高昂的硬件设备&#xff0c;也不再需要体量庞大的游戏本体&#xff0c;就能获得…

ssd重装系统的详细教程

当我们给电脑更换安装了新的固态硬盘&#xff0c;原来的系统没有了。那么电脑新固态ssd怎么安装win7系统&#xff0c;下面小编就教下大家ssd重装系统教程&#xff0c;希望大家都可以学会哦。 工具/原料&#xff1a; 系统版本&#xff1a;Windows7 品牌型号&#xff1a;惠普星…

PDF怎么转换成excel免费?快收藏这几个方法

在我们日常处理的的工作文件中&#xff0c;PDF文件的数量是越来越高的&#xff0c;而且因为PDF文件比较方便观看&#xff0c;所以很多数据文件也都是PDF格式的&#xff0c;不过PDF文件是不可编辑的&#xff0c;所以在一定程度上还是有限制的&#xff0c;这样我们就不能及时修改…

数据的存储(2)大小端字节序存储

TIPS 1. 2. 3. *是解应用操作符&#xff0c;*指针变量&#xff0c;对指针变量进行解应用操作&#xff0c;固然没问题。但是要知道的是&#xff1a;也可以直接对最最原始的地址进行解应用操作&#xff0c;如*字符串常量&#xff0c;*数组名&#xff0c;*&a等等&#…

云开发项目如何管理资产下的设备?

在开发 SaaS 应用前&#xff0c;开发者需要先在 涂鸦 IoT 开发平台 上创建云开发项目并进行必要的配置。下面我将为大家介绍管理资产的详细操作方法。 云开发支持以资产为维度&#xff0c;对不同资产下的设备进行权限分隔和资产内设备的统一管理。 新建资产 资产&#xff08…

dpdk-lvs的一次线上故障排查报告

背景 我们内部基于 dpdk 自研的高性能负载均衡器 dpdk-lvs 已经在多个机房部署上线&#xff0c;运行正常&#xff0c;但近期有多个金融相关的业务反馈&#xff0c;服务数据包在经过dpdk-lvs转发后&#xff0c;会出现hang住的情况。 问题 1、dpdk-lvs 已经在多个机房上线&…

服务搭建篇(五) Redis单机/redis-cluster集群搭建

一. Redis集群简介 redis集群是一个由多个主从节点群组成的分布式服务器群&#xff0c;它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式&#xff0c;这种集群模式没有中心节点&#xff0c;可水平扩…

C语言重点解剖指针和数组要点速记

1.指针指向的是最低字节地址。 2.每一次跑程序&#xff0c;变量的地址都会是随机的&#xff0c;这是一种保护机制。基本上不可以使用地址直接访问变量。 3.以下是一段有意思的代码。 4.在栈上开辟变量&#xff0c;地址由高到低变化&#xff0c;值得注意的是&#xff0c;不是连…

云原生|kubernetes|kube-bench安全检测工具的部署和使用

前言&#xff1a; 安全是一个绕不开的话题&#xff0c;那么&#xff0c;在云原生领域&#xff0c;在kubernetes内更加的需要安全。毕竟没有人愿意自己的项目是千疮百孔&#xff0c;适当的安全可以保证项目或者平台稳定高效的运行。 安全性是一个永远不会消失的问题&#xff0c…

基于springboot+mybatis+mysql+vue软件缺陷管理系统

基于springbootmybatismysqlvue软件缺陷管理系统一、系统介绍二、功能展示1.主页2.个人中心3.缺陷管理4.项目管理5.系统管理6.统计分析三、代码展示四、其它1.其他系统实现2.获取源码一、系统介绍 系统主要功能&#xff1a; 开发人员&#xff1a;主页、个人中心&#xff08;我…