c++基础入门一

文章目录

  • C++基础入门(一)
    • 一、C++简介
    • 二、C++入门
      • 一、命名空间
        • 食用方法
      • 二、输入/输出
      • 三、缺省参数

C++基础入门(一)

一、C++简介

​ C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。

1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

img

C++祖师爷

二、C++入门

在开始前,先让我们进入最熟悉的操作

image-20240909234113380

熟练用各种语言输出Hello World

由于C++是C的补充,因此常用的变量,与C都是一致的,这里回顾一下常用的变量

类型描述
int整数类型,通常用于存储普通整数,通常占用 4 个字节
float单精度浮点值,用于存储单精度浮点数。
double双精度浮点值,用于存储双精度浮点数。
bool布尔值,用于表达True or False

一、命名空间

在C/C++的大型项目中,是会有大量的全局变量或者局部变量的命名,如果使用不当,会造成冲突。因此,我们要对标识符的名称进行本地化,以避免命名污染和冲突。

#include<stdio.h>
#include<stdlib.h>int rand = 10;
int main() {printf("%d", rand);return 0;
}

在这段代码中,会报错rand:重定义,以前的定义是函数

image-20240911120023858

rand是内置的函数,新定义的rand变量和内置的函数冲突了。

(一)直接创建

namespace N1 {int rand = 0;int print = 2;int sum(int a,int b) {return a + b;}struct MyStruct{struct MyStruct* Node;int next = 0;};
}

(二)嵌套创建

namespace N1 {int rand = 0;int print = 2;int sum(int a,int b) {return a + b;}struct MyStruct{struct MyStruct* Node;int next = 0;};namespace N2 {int rand = 0;int print = 2;int sum(int a, int b) {return a + b;}}
}
食用方法

​ 创建了命名空间就是创建了一个新的作用域,所有内容都局限于这个域,要使用需要三种方法

(一)命名空间名称+作用域限定符

//test.c
#include<iostream>
namespace N1 {int rand = 0;int print = 2;int sum(int a,int b) {return a + b;}
}
int main() {std::cout << N1::print <<std::endl;std::cout << N1::rand << std::endl;return 0;
}

这段代码多了几个东西,stdendl::

std是C/C++标准库的一个命名空间,里面含有大量的标准函数、类、对象、模版[C++ 标准库 | 菜鸟教程 (runoob.com)]

cout就相当于C语言的printf函数,存在std这个命名空间里面。::是作用域限定符,使用cout就要访问到std这个域,需要使用::访问。endl就相当于换行

(二)using+namespace+命名空间名称

using namespace N1;int main() {std::cout << print << std::endl;std::cout << sum(1,2) << std::endl;return 0;
}

(三)using+命名空间的成员

using N1::print;
using  N1::sum;int main() {std::cout << print << std::endl;std::cout << sum(1,2) << std::endl;return 0;
}

二、输入/输出

学过的都知道,熟练运用某语言输出Hello World,那么,该如何优雅的输入输出呢

前面介绍到std是标准库的一个命名空间,这个空间包括了输入输出的函数

使用cin标准输入对象(键盘)和cout标准输出对象(屏幕)必须包含<iostream>头文件和命名空间std

其中<<是标准输出流,>>是标准输入流。这两个函数比printfscanf好用,可以自动识别类型,不需要加占位符%

#include<iostream>
using namespace std;int main() {int a = 0;cin >> a;cout << "Hello World"<<endl << a << endl;return 0;
}

image-20240911173202248

建议:在日常使用中,可以直接使用std,在开发项目过程中,存在大量命名,可以使用限定命名空间名称std::cin/std::cout

三、缺省参数

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

int ADD(int a = 1, int b = 2) {return a + b;
}int main() {cout << ADD() << endl;	//没有指定实参,使用默认值cout << ADD(4, 5) << endl;//指定实参return 0;

类型:

全缺省参数

void Fun(int a = 1, int b = 2,int c=3) {cout << a << endl;cout << b << endl;cout << c << endl;//全缺省
}int main() {Fun();return 0;
}

image-20240911191638074

半缺省参数

void Fun(int a,int b = 2,int c=3) {cout << a << endl;cout << b << endl;cout << c << endl;//半缺省
}int main() {Fun(10);return 0;
}

image-20240911192000956

1、缺省参数的值必须要从右往左给

2、缺省参数不能同时出现在函数声明和定义,否则编译器无法识别

//a.cpp
void Fun(int a=1)
//a.h
void Fun(int a=1)

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

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

相关文章

python版本dikstra堆优化

题目&#xff1a; 代码&#xff1a; from heapq import * #堆优化版本的最短路算法&#xff08;dijkstra&#xff09; N150010 h[-1 for _ in range(N)] e[-1 for _ in range(N)] ne[-1 for _ in range(N)] w[-1 for _ in range(N)] idx0 st[False for _ in range(N)] dist[fl…

Shopee虾皮:广告类型选择与效果优化要点

Shopee虾皮作为东南亚增势迅猛的电商平台&#xff0c;是很多跨境卖家出海东南亚的首要选择。这势必带来强烈的竞争&#xff0c;因此&#xff0c;如果卖家想要突出重围&#xff0c;广告投放和优化则格外重要。 一、虾皮的广告类型 1.关键词广告 当买家搜索的关键字与卖家投放的…

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

概述 在Qt中&#xff0c;可以使用样式表&#xff08;StyleSheet&#xff09;来自定义 QMenu 的外观&#xff0c;包括其子项&#xff08;如菜单项QAction&#xff09;的颜色。但是&#xff0c;这通常可以设置 QMenu 的整体样式&#xff0c;而不能单独设置某个子项的颜色。不过&…

什么是 SMB 服务器以及它如何工作?

在本文中&#xff0c;您将了解 SMB 服务器以及它们如何促进网络文件共享。 我们将介绍它们的基本功能、主要特性以及如何安全地设置它们。无论您是新手还是需要复习&#xff0c;本指南都将帮助您更好地了解 SMB 服务器。 什么是 SMB 服务器&#xff1f; SMB&#xff08;服务器…

C语言浮点型数据在内存中的存储(23)

文章目录 前言一、浮点数在内存中的存储练习引入浮点数的存储浮点数存的过程 二、浮点数取的过程E不全为0或不全为1E全为0E全为1 三、再回顾练习总结 前言 哎&#xff0c;之前写了一篇&#xff0c;可是中途退出没保存&#xff0c;只能再写一遍了~   浮点数在内存中的存储跟整…

计算左边(比自己小的元素)的最长距离

前言&#xff1a;一般做的题目都是使用单调栈来求出距离这个点最近的那个比这个数大或小的元素&#xff0c;但是如果是需要找到最远的那个元素呢&#xff1f;我们可以用到类似逆序对的思路&#xff0c;我们先进行排序从小到大&#xff0c;接着我们先处理左边&#xff0c;每次维…

vue3使用vscode开发遇到热更新问题(文件保存页面不实时更新)

1.第一种情况是所有页面都不热更新 检查Live Server插件&#xff0c;确保安装&#xff0c;安装也无效可以试一下重新安装 2.只有个别页面没有热更新(本人是这种情况) 遇到这种情况就要检查路由文件中导入的文件名称与项目中文件名字是否一致(大小写也要一样) 若路由文件中 导…

利用shuji还原webpack打包源码

0 前言 前段时间做一个银行的项目&#xff0c;是在别人已经打过好多次的基础上继续打&#xff0c;而且时间很短&#xff0c;也是没办法要有产出&#xff0c;这个银行很多站点都是webpack打包&#xff0c;就新学了一个点&#xff1a;利用shuji获取webpack打包站源码&#xff08…

设置使用阿里云服务器DNS

由于云服务器是从腾讯云迁移到阿里云&#xff0c;然后使用ssl验证时一直无法使用dns验证&#xff0c;也无法创建三级域名&#xff0c;原来需要把阿里云服务器改成阿里云的dns使用 如果使用其他服务器DNS会下面会显示当前DNS服务器&#xff0c;

怎么将flv转换成mp4格式?这几种转换方法超多人在用!

怎么将flv转换成mp4格式&#xff1f;FLV&#xff0c;这一视频格式在大众视野中相对边缘化&#xff0c;其鲜为人知并非偶然&#xff0c;背后隐藏着多重挑战&#xff0c;首要挑战在于其兼容性的局限&#xff0c;由于FLV的小众属性&#xff0c;许多现代软件与操作系统并未给予充分…

day-55 不同路径

思路 动态规划&#xff1a;因为只能向右或向下移动&#xff0c;可以得出状态转换方程&#xff1a;dp[i][j]dp[i-1][j]dp[i][j-1] 解题过程 直接令第一行和第一列全为1&#xff0c;然后通过状态转换方程进行计算&#xff0c;返回dp[m-1][n-1]即可 Code class Solution {publi…

53.【C语言】 字符函数和字符串函数(strcmp函数)

7.strcmp函数 *简单使用 cplusplus的介绍 点我跳转 strcmp:string compare 字符串比较 具体讲解见此文 点我跳转 *例题 求下列代码的执行结果 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() {char arr1[20] { &quo…

Java项目: 基于SpringBoot+mybatis+maven新闻推荐系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven新闻推荐系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

时间安全精细化管理平台存在未授权访问漏洞

漏洞描述 登录--时间&amp;安全精细化管理平台存在未授权访问漏洞导致与员工信息泄露 FOFA&#xff1a; body"登录--时间&amp;安全精细化管理平台" POC IP/acc/_checkinoutlog_/

Amoco:一款针对二进制源码的安全分析工具

关于Amoco Amoco是一款功能强大的二进制源码静态分析工具&#xff0c;该工具基于Python 3.8开发&#xff0c;可以帮助广大研究人员轻松对二进制程序执行静态符号分析。 工具特性 1、一个通用的指令解码框架&#xff0c;旨在减少实现对新架构的支持所需的时间。例如&#xff0c…

Go第三方框架--gin框架(三)

5. net/http框架源码-- 多路复用的实现 这块核心功能对应 1.3 的圆圈2&#xff0c;所属代码如下图&#xff1a; run代码涉及的操作不是gin框架的核心&#xff0c;还记的我说过gin是在net/http的基础上操作的吗&#xff0c;我们来看下gin和net/http包的关联关系。 gin: 主要建…

批发供应系统案例分析

在快速变化的商业环境中&#xff0c;创新成为推动批发供应行业不断前行的关键动力。以下将通过几个案例分析&#xff0c;探讨创新批发供应系统如何引领行业变革&#xff0c;提升效率&#xff0c;优化服务&#xff0c;并创造新的市场机遇。 一、智能化库存预测与补货系统 案例概…

人工智能在鼻咽癌中的应用综述|文献精析·24-09-13

小罗碎碎念 这篇文章系统回顾了人工智能在鼻咽癌管理中的应用&#xff0c;发现AI在提高诊断、预后评估和放疗计划的自动化方面具有积极影响。 作者角色作者姓名单位&#xff08;中文&#xff09;第一作者Wai Tong Ng香港大学深圳医院临床肿瘤中心&#xff0c;中国&#xff1b;香…

不可思议!这7个反共识设计原则,正悄然改变AI应用的未来格局!

引言 在AI技术日益成熟的今天&#xff0c;如何设计出既符合用户需求又具备高度智能化的原生应用&#xff0c;成为摆在开发者面前的重要课题。然而&#xff0c;传统的应用设计思维往往限制了AI潜力的充分发挥。本文提出的七个反共识观点&#xff0c;旨在挑战传统观念&#xff0…

老程序员的数字游戏开发笔记(一) —— 世界从Godot开始

目录 开篇废话 GDScript 是什么 创建 GDScript 背后的动机是什么 Godot 会支持【此处插入 FMOD、GameWorks 等闭源 SDK 的名字】吗&#xff1f; 是否能用 Godot 创建非游戏应用&#xff1f; Godot 使用的用户界面工具包是什么&#xff1f; 为什么 Godot 使用 SCons 构建…