C++入门基础简述

在这里插入图片描述

文章目录

  • 前言
    • 1、C++首个程序
    • 2、namespace关键字
    • 3、C++输入/输出
    • 4、缺省参数
    • 5、函数重载
    • 6、C++中的引用
    • 7、const 引用
    • 8、指针和引用的关系
    • 9、inline关键字
    • 10、nullptr关键字

前言

此篇文章主要简述流程:C++首个程序 -> namespace关键字 -> C++输入/输出 -> 缺省参数 -> 函数重载 -> 引用。

1、C++首个程序

  1. C语言中第一个程序的写法:
//C语言中的第一个程序
#include<stdio.h>int main()
{printf("Hello World!\n");return 0;
}
  1. C++第一个程序的写法:
//C++语言第一个程序
#include<iostream>
using namespace std;
int main()
{cout << "Hello World!" << endl;return 0;
}

从对比可以看出两者的差异,一开始只要记住该格式就ok!

2、namespace关键字

含义:命名空间。
主要作用:解决命名冲突的问题。(变量名、函数名、类型名);

  1. 在C++中,4大区域:函数局部域、全局域、命名空间域、类域;其中函数局部域和全局域会影响编译查找逻辑和变量的生命周期,后两者不会影响影响变量的周期。

namespace的定义:
格式:namespace { 函数、变量、类型 }
注意:namespace只能定义在全局区,也就是主函数的外面,同=时支持嵌套定义。具体例子如下:

  • 这个例子可以看出命名冲突的情况:
#include<iostream>
int rand = 10;
int main()
{printf("%d\n",rand);return 0;
}

在这里插入图片描述

  1. 解决上面的问题就用到namespace。
#include<iostream>
namespace variable
{int rand = 10;
}int main()
{printf("%d\n",rand);return 0;
}

写成这样可以解决命名冲突的问题,但怎样访问自己定义的rand数据呢?需要用C++中的作用域::

#include<iostream>
namespace variable
{int rand = 10;
}int main()
{printf("%d\n",variable::rand);return 0;
}

在这里插入图片描述

3、C++输入/输出

  1. 头文件<iostream>表示input output stream的缩写,是标准的输入、输出流库。
  2. std::cin是istream类的对象,主要面向窄字符的标准输入流。
  3. std::cout是ostream类的对象,主要面向窄字符的标准输出流的。
//C++输入/输出
#include<iostream>
using namespace std;
int main()
{cout<<"C++你好!"<<endl;//endl就是换行的return 0;
}

4、缺省参数

  1. 缺省参数的含义:简单说就是我们在声明或定义函数的时候,给参数给定一些初始值,当我们在调用函数的时没给实参的时候就会用参数中的初始值。
  2. 分类:全缺省参数、半缺省参数。
  3. 全缺省参数:给函数的形参都给一个初始值(缺省值);
  4. 半缺省参数:给函数中部分形参给缺省值。
  5. 注意:C++规定半缺省参数的时候,必须从右往左一次缺省(给初始值),必须是连续的,不能间隔。
  6. 当函数的声明和定义分开的时候,缺省参数不能再声明和定义中同时出现,规定必须函数声明给缺省值。

代码例子如下:

//缺省参数
#include<iostream>
using namespace std;
//全缺省参数
void func1(int number=20)
{cout << "number=" << number << "\n";
}
int main()
{func1();func1(666);return 0;
}

在这里插入图片描述

  • 全缺省参数和半缺省参数
//全缺省参数和半缺省参数的区别
#include<iostream>
using namespace std;
//全缺省参数
void func2(int a=10,int b=20,int c=30)
{cout << "a+b+c=" << a + b + c << "\n";
}
//半缺省参数
void func3(int a,int b=20,int c=30)
{cout << "a+b+c=" << a + b + c << "\n";
}
int main()
{func2();func3(40);return 0;
}

在这里插入图片描述

5、函数重载

  1. 含义:在同一作用域中出现相同的函数名。在C++中函数重载可以表现出多态的行为,使用更灵活。
  2. 函数重载的条件:①函数名必须相同。②访问修饰符无要求。③返回值类型无要求。④函数的参数列表必须不同(参数个数不同、参数类型不同、参数的顺序不同)。

下面是函数重载的例子:加法函数实现不同类型的相加

//函数重载
#include<iostream>
using namespace std;
void Add(int a, int b)
{cout << "a+b=" << a + b << "\n";
}
void Add(double a, double b)
{cout << "a+b=" << a + b << "\n";
}
int main()
{Add(10, 20);Add(1.5, 1.5);return 0;
}

在这里插入图片描述

6、C++中的引用

  1. 引用的概念:记住一句话就是引用就是给变量取别名,并且编译器不会给引用变量开辟内存空间的,它和引用的变量共用一个内存空间(原来的内存空间)。简单例子就是《水浒传》各个英雄好汉的外号。
  2. 引用的定义格式:类型名& 引用的别名 = 引用对象;在语言中&表示取地址,C++中是引用别搞混了喔。

我们在使用引用的时候的注意事项:
①引用在定义必须初始化。
②一个变量可以有多个引用,但是一个一会引用只能用于一个变量(引用一旦引用了一个实体后,就不能引用其他实体了)。
③引用也可以被引用。(就是一个变量被引用后,那个引用的又可以取别名。)

  1. 引用的具体应用:
    ①主要用于函数传参和函数的返回值,这样可以减少拷贝从而提高效率。
    ②在改变引用后,被引用对象会跟着改变。
  2. 具体例子如下:
//引用的应用(交换两个数)
#include<iostream>
using namespace std;
void Swap(int& a, int& b)
{int tmp = a;a = b;b = tmp;
}
int main()
{int number1 = 100;int number2 = 200;cout << "number1=" << number1 << "  " << "number2=" << number2 << "\n";Swap(number1, number2);cout << "number1=" << number1 << "  " << "number2=" << number2 << "\n";return 0;
}

可以看到引用的变量和被引用对象是同一个内存空间。
在这里插入图片描述

7、const 引用

const引用就是被引用对象是const修饰的。

  1. 在使用const 需要提到权限缩放。例如:
//const 引用
#include<iostream>
using namespace std;
int main()
{权限放大//const int number = 10;//只读的权限,因为const修饰的//int& rnu = number;//变为了可读可写的,因此报错//权限缩小可以int number2 = 30;const int& rnu = number2;cout << "rnu=" << rnu << "\n";//平级的可以int number3 = 40;int& rnu1 = number3;cout << "rnu1=" << rnu1 << "\n";return 0;
}
  1. 临时对象的情况:产生条件是一个表达式、函数调用返回值、类型转换。编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象,在C++中把这个未命名对象叫做临时对象。
  2. 比如说:
#include<iostream>
using namespace std;
int main()
{int a = 10;int b = 20;//int& rab = a + b;//a+b是临时变量,临时变量具有常性,需要const修饰const int& rab1 = a + b;cout << "rab1=" << rab1 << "\n";return 0;
}

8、指针和引用的关系

①首先从语法上看,引用就是给变量取别名,不用开辟内存空间,是和被引用对象共用内存空间的;但是指针是存储变量的地址的,是需要开辟新的内存空间的;
②从使用角度看,引用在使用的时候必须初始化的,而指针从语法不是必须初始化的,但是建议初始化,避免野指针。
③引用在引用一个对象后,就不能再引用其他对象,但是指针可以不断改变指向的对象。
④引用可以直访问所指的对象,而指针需要解引用才可以。
⑤在引用的条件下,sizeof表示引用类型的大小,但是指针使用sizeof则是表示不同操作系统下所占字节个数(32位中占4位,64位下占8位)
⑥从安全角度看,指针很容易出现野指针,而引用相对来说不太容易出现。

9、inline关键字

inline关键字:只要是该关键字修饰的函数叫做内联函数。我们在编译C++编译器的时候,会在调用函数的地方展开内联函数,这样调用内联函数就需要建立栈帧,从而提高效率。
应用地方:主要是用于频繁调用的短小的函数。不适合递归函数。

10、nullptr关键字

nullptr实质是一个宏;
在C++中,NULL定义成为了0,然而在C语言中被定义成为的是空指针;为了防止下面错误的发生:
在这里插入图片描述
于是在C++中又定义了nullptr指针,是一种特殊的关键字,它可以转换成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,⽽不能被转换为整数类型。

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

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

相关文章

【C++航海王:追寻罗杰的编程之路】一篇文章带你认识哈希

目录 1 -> unordered系列关联式容器 1.1 -> unordered_map 1.1.1 -> unordered_map的文档介绍 1.1.2 -> unordered_map的接口说明 1.2 -> unordered_set 2 -> 底层结构 2.1 -> 哈希概念 2.2 -> 哈希冲突 2.3 -> 哈希函数 2.4 -> 哈希冲…

100 个网络基础知识普及,看完成半个网络高手!

1&#xff09;什么是链接&#xff1f; 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2&#xff09;OSI 参考模型的层次是什么&#xff1f; 有 7 个 OSI 层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0…

公有云API常见的认证方式

公有云API常见的认证方式 Token认证 &#xff08;百度云、腾讯云&#xff09; AK/SK认证 (阿里云、天翼云、腾讯云) RSA非对称加密方式 &#xff08;信核云灾备&#xff09; Token认证 AK/SK认证 RSA认证 种方式使用一对密钥&#xff0c;即公钥和私钥。公钥可以公开&#x…

柳永,市井生活的吟游者

柳永&#xff0c;原名柳三变&#xff0c;字景庄&#xff0c;后改名为柳永&#xff0c;字耆卿&#xff0c;约生于宋太宗雍熙元年&#xff08;公元984年&#xff09;&#xff0c;卒于宋仁宗皇祐五年&#xff08;公元1053年&#xff09;&#xff0c;享年69岁。他是北宋著名词人&am…

基于eBPF的procstat软件追踪程序Offcpu时间

在现代计算机系统中&#xff0c;性能调优和问题诊断是大家经常会面临的问题&#xff0c;解决这些性能问题是确保程序高效运行的关键。有时不知为何程序的吞吐量和时延出现抖动&#xff0c;有一种可能就是程序发生了Offcpu。了解程序的 Offcpu 时间有助于识别潜在的性能瓶颈和系…

【论文速读】《面向深度学习的联合消息传递与自编码器》,无线AI的挑战和解决思路

这篇文章来自华为的渥太华无线先进系统能力中心和无线技术实验室&#xff0c;作者中有大名鼎鼎的童文。 一、自编码架构的全局收发机面临的主要问题 文章对我比较有启发的地方&#xff0c;是提到自编码架构的全局收发机面临的主要问题&#xff1a; 问题一&#xff1a;基于随…

Rhino云渲染使用教程

Rhino是一款功能强大、灵活易用的三维计算机图形建模软件&#xff0c;广泛应用于建筑、工业设计、产品设计、珠宝设计、动画制作等多个领域。哪Rhino可不可以使用云渲染呢&#xff1f;答案是可以的&#xff0c;下面给大家介绍一下炫云Rhino云渲染的使用方法。 1、搜索“炫云”…

springboot枚举简单使用笔记

springboot枚举简单使用笔记 定义枚举: package com.geofly.ynygzx.iscp.api.common.enums;/*** Description: 需求提交记录状态枚举** Param:* Return:* Author yanghaoxing* Date 2024/7/12 10:01*/public enum RequirementSubmissionStatus {BACK("已撤回", 0),S…

Java I/O模式 (一)

第一章 Java的I/O演进之路 1.1 I/O模型基本说明 1/0模型&#xff1a;就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收&#xff0c;很大程度上决定了程序通信的性能&#xff0c;Java 共支持3种网络编程的/10 模型&#xff1a;BIO、NIO、AIO 实际通信需求下&am…

Centos忘记密码,重置root密码

Centos忘记密码&#xff0c;重置root密码 操作环境&#xff1a;Centos7.6 1、选择包含rescue的选项&#xff0c;按e进入编辑模式 首先&#xff0c;我们需要重启系统&#xff0c;进入开机引导菜单界面。在这里&#xff0c;我们可以看到系统的内核版本和启动参数等信息。我们需…

【JavaEE精炼宝库】文件操作(2)——文件内容读写 | IO流

文章目录 一、输入流1.1 InputStream 概述&#xff1a;1.2 read 方法详解&#xff1a;1.3 close 方法&#xff1a;1.4 利用 Scanner 进行读操作&#xff1a;1.5 Reader&#xff1a; 二、输出流2.1 OutputStream 概述&#xff1a;2.2 write 方法详解&#xff1a;2.3 利用 PrintW…

学习测试8-数据库mysql操作

下载配置mysql 网络博客 使用 在Linux里 1 service mysql start 启动服务 2 在Navicatt 中连接Linux服务器 3 第一步 将所有文件上传到/opt目录下 第二步 chmod 777 deploy-mysql.sh 第三步 ./deploy-mysql.sh4 service mysql status 查看状态是否安装成功 5 重启mys…

Typescript 模块小知识-global scope

问题表现 在编写ts代码的时候遇到一个问题, 表现为, 如果在某个ts工程中, 如果多个文件里面没有任何导出export或者是export default, 那么这些文件如果有const或者是let定义相同的声明都会报错如下 无法重新声明块范围变量 a/a.ts 和 index.ts 和 index2.ts 都没有进行expor…

基于Redisson 实现 Redis 分布式锁

代码示例&#xff1a; GetMapping("/testJmeter")public void testJmeter() {synchronized (this){int stock Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"))if (stock > 0) {int realStock stock - 1;stringRedisTemplate.opsFo…

盘点:流媒体视频流协议与EasyCVR视频监控技术的深度融合

随着科技的不断进步&#xff0c;视频监控技术已经渗透到了社会的各个角落&#xff0c;从公共安全到企业运营&#xff0c;再到家庭安全&#xff0c;其应用范围日益广泛。而视频流格式作为视频监控技术的核心要素之一&#xff0c;其选择和应用对于确保视频传输的流畅性、清晰度和…

Python爬虫教程第3篇-解决使用reqeusts遇到的ProxyError异常

起因 问题出现在windows电脑上&#xff0c;我用mac执行程序的时候并不会报错&#xff0c;但是如果在windows上的时候&#xff0c;大部分windows电脑会报错&#xff0c;而有些版本低的windows电脑又不会报错。 异常栈信息 HTTPSConnectionPool, Cannot connect to proxy, no …

基于SpringBoot的校园疫情防控系统

你好&#xff0c;我是专注于计算机科学与技术的研究者。如果你对我的工作感兴趣或有任何问题&#xff0c;欢迎随时联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;B/S架构 工具&#xff1a;Eclipse&#xff0c;Mav…

2024中国互联网大会 | 中国电信携手产业链伙伴推动低空经济行业创新与发展

低空经济是指以民用有人驾驶和无人驾驶航空器在低空空域内的各类飞行活动为牵引&#xff0c;辐射带动相关领域融合发展的综合经济形态。2024年全国两会&#xff0c;“低空经济”首次写入国务院政府工作报告。 赛迪顾问在《中国低空经济发展研究报告&#xff08;2024&#xff09…

python作业二

# 二进制转化为十进制 num input("num:")def binaryToDecimal(binaryString):he 0length len(binaryString)for i in range(length):he int(binaryString[i]) * 2 ** (length - i - 1)return heprint(binaryToDecimal(num))代码运行如下&#xff1a; import math…

特种设备管理为什么这么难?为何它是安全生产的重中之重?

随着工业化进程的加速和科技水平的不断提升&#xff0c;特种设备作为工业生产、公共服务和基础设施建设中的关键要素&#xff0c;其应用范围日益广泛&#xff0c;从大型压力容器、锅炉、电梯、叉车到压力管道、客运索道等&#xff0c;无一不渗透于我们日常生活的方方面面。然而…