【C++ 学习记录】(一)--你好,C++

news2024/11/25 22:57:19

写在前面

工作需要,重学C++,实在是太痛苦了,大二的时候应试就没学会!!

进入正题

1.编程是怎么回事

C++在百科上的解释是一种静态数据类型检查 的、支持多种编程范式(面向过程与面向对象等)的通用程序设计语言。通俗来说,为了表达事物之间的可联系性,经常用动词verb将各个事物或客体的对象之间联系起来,这些用动词缀连起来的句子就是C++的表达式,动词在这里就是C++的函数;将句子按照逻辑关系组合就形成文章,也就是C++ 的程序。

2.拿来主义

C++继承了C的特性和优点,还借鉴了其他程序设计语言的优点,C++从Simula拿来了类的概念;从Algol68拿来了操作符重载、引用以及在 任何地方声明变量的能力;从BCPL拿来了“//”注释;从Ada拿来了模板、名字空间;从Ada、Clu和ML拿来了异常处理等。同时,C++吸收了很多新的特性,其中包括虚函数、函数名和操作符重载、常数、用 户可控制的自由空间储存区、改良的类型检查及新的双斜线“//”单行注释风格。

3.面向对象

C++首先是作为一门面向对象(OOP)的程序设计语言而闻名的。在C语言的基础上,C++添加了“类”的概念,从而可以很准确地表达出面向对象思想中封装、继承和多态的机制。所以,C++也可以用于面向对象程序设计,而这也是它最主要的应用状态。

一些重要的概念和要点

1.类与对象:类包含了数据成员和成员函数,数据成员表示对象的属性,成员函数表示对象的行为。通过实例化对象,我们可以使用类中的数据和函数。

2.封装:C++ 支持封装,即将数据和操作数据的函数封装在类中,对外部隐藏实现细节,只暴露必要的接口。

3.继承:继承是面向对象编程的一个重要特性,允许一个类(派生类)继承另一个类(基类)的属性和方法。派生类可以拥有基类的所有成员,并且可以添加自己的新成员。

4.多态:多态允许以统一的方式使用不同的类对象,即不同的对象可以使用相同的接口来执行不同的操作。这通过虚函数和函数重写实现。

5.标准模板库(STL):C++ 提供了一个强大的标准模板库,包含了各种容器类(如向量、列表、映射等)和算法(如排序、查找等),可以大大提高编程效率。通俗的理解,容器就是STL中的瓶瓶罐罐,STL中的容器是用来管理数据的,在容器诞生之前,程序员要使用数组来保存和管理程序中的大量数据。使用数组,虽然能够达到目的,但是程序员需要自己做很多事情,比如管理内存、维护数组中保存的数据、防止数组访问越界等。相比于数组,容器更加强大而灵活:它们的容量可以动态地扩充和缩减;它们可以自己管理内存;它们可以记住自己包含了多少数据元素;它们限定了自己所支持的操作复杂性;总的来讲,容器就是能够保存某种类型数据的类。它就像一个书架一样,把大量的数据组织起来对其进行管理,以便于算法对数据的访问。

按照组织数据的方式不同,STL中的容器分为顺序容器(sequence container)和关联容器(associative container)两种。
在这里插入图片描述

6.命名空间:命名空间是用于避免命名冲突的一种机制,将相同名称的类、函数、变量等放在一个命名空间中,可以使代码更加模块化和可维护。

7.动态内存管理:C++ 支持动态内存分配和释放,通过 new 和 delete 运算符来动态地创建和销毁对象,这使得内存管理更加灵活。

8.输入输出流:C++ 提供了流的概念,可以通过输入流(如 cin)接收用户输入,通过输出流(如 cout)向用户输出结果。

最后,可以使用C++编写一个简单的代码实例,例如计算两个数的和。

#include <iostream>
// 使用System名字空间,这是C++中的编程经验
using namespace std;

int main() {
    int num1, num2;

    // 输入两个整数
    cout << "请输入第一个整数:";
    cin >> num1;

    cout << "请输入第二个整数:";
    cin >> num2;

    // 计算并输出两个数的和
    int sum = num1 + num2;
    cout << "两个数的和为:" << sum << endl;

    return 0;
}

上述代码示例中,我们使用 iostream 头文件中的 cout 和 cin 来进行输入输出。cout 用于输出结果到屏幕,cin 用于接收用户输入。在 main() 函数中,我们首先声明了两个整数变量 num1 和 num2,然后通过 cin 分别接收用户输入的两个整数值。接下来,我们计算这两个整数的和,并将结果使用 cout 输出到屏幕上。当你运行这个程序时,它会要求你输入两个整数,并返回它们的和。

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

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

相关文章

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite 带着一个问题去学&#xff1a;明明可以直接访问一个后端系统的OData服务&#xff0c;为什么还要再多绕一道C…

UE学习记录02----UMG创建控件模板+事件分发器

官网4.27&#xff1a; 创建控件模板 | 虚幻引擎文档 (unrealengine.com) 使用UMG创建的每个 控件蓝图 都被视为 用户控件&#xff0c;其可在其他控件蓝图中重复使用和放置。 其视觉效果和脚本功能都将延续到该蓝图中。 利用某些蓝图脚本&#xff0c;可创建UI控件的运行方式或…

echarts——环形图

const value_ze 60 const value2_ze 30 var myChart echarts.init(document.getElementById(myChart)); var option {title: {text: 目标完成率,subtext: [{a|${value_ze}}, {b|%}].join(),itemGap: 10,textStyle: {fontSize: 14,color: #fff,fontWeight: 500},subtextStyl…

springboot拦截器无法进行属性注入

文章目录 问题描述问题原因问题解决解决方法一解决方法二 总结 问题描述 今天在使用拦截器的时候遇见了一个奇怪的错误&#xff0c;就是在对拦截器进行属性注入的时候为null&#xff0c;具体如下 运行代码出现空指针异常 就是注入的Gson为null&#xff0c;这个问题很奇怪&a…

STM32 HAL库定时器输入捕获SlaveMode脉宽测量

STM32 HAL库定时器输入捕获SlaveMode脉宽测量 SlaveMode模式简介 ✨SlaveMode复位模式&#xff1a;在发生一个触发输入事件时&#xff0c;计数器和它的预分频器能够重新被初始化&#xff1b;同时&#xff0c;如果TIMx_CR1寄存器的URS位为低&#xff0c;还会产生一个更新事件UEV…

SQLSERVER中exec 与 exec sp_executesql 的用法及比较

SQLSERVER 提供 exec 与 exec sp_executesql &#xff08;2005版本开始&#xff09;执行动态sql。 一、EXEC 命令有两种用法 1、执行存储过程 exec 存储过程 参数 值 --或 exec 存储过程 值 exec 存储过程 存储过程中的参数参数{接受参数返回值} outputCREATE PROC…

空气净化器触摸屏中应用的电容式触摸芯片

现在人们对于居住环境要求较高&#xff0c;许多家庭会选用空气净化器吸咐污物。那么空气净化器原理是什么&#xff1f;空气净化器工作原理分为两种&#xff1a; 被动式空气净化器原理&#xff1a;是用风机将空气抽入机器&#xff0c;通过内部的滤网过滤空气&#xff0c;起到过滤…

亚马逊气候友好碳中和认证

CLIMATE PLEDGE FRIENDLY AND CARBON NEUTRAL Climate Pledge Friendly气候友好认证&#xff0c;亚马逊推出的气候友好认证是一种自愿性&#xff0c;倡导性的认证。那么这个Climate Pledge Friendly是个什么样的认证&#xff0c;如何才能获得这个气候友好认证标签呢&#xff1…

使用onnx和onnxruntime完成模型部署

模型部署定义 深度学习模型部署是指训练好的模型在特定环境中运行的过程。 模型部署的流水线如下&#xff1a; 使用任意一种深度学习框架来定义网络结构并训练模型训练好的模型的网络结构和参数会被转换成一种只描述网络结构的中间表示&#xff08;如&#xff0c;onnx、torch…

Shiro 初识

1&#xff0c;了解Shiro Shiro是一个安全框架&#xff0c;主要用于用户认证&#xff0c;访问授权&#xff0c;会话管理&#xff0c;数据加密 2&#xff0c;实践 2.1 创建文件 这个例子没有链接数据库&#xff0c; 所以需要在resources下创建文件shiro.ini shiro.ini内容&am…

Vant源码解析(三)van-stepper步进器

先说下自己的开发思路&#xff0c;然后在对照下vant组件的思路&#xff0c;来查找下自己的不足。 这个步进器有加和减的功能&#xff0c;还有输入的功能&#xff0c;限制最小和最大的功能。 我理解的Vant组件的思路 点击事件都是onTap,根据变量进行判断是加还是减&#xff0c;数…

vuecli5.x 配置图片输出为base64

解释&#xff1a;webpack的默认配置是小于一定的文件大小就要将图片转为base64, 所以尽量将这个阈值调大你的图片就可以转为base64; 当然这种做法不好, 会导致代码文件变大, 不过为了满足需求也没得办法。这年头大家都用 vite 了, 网上没有 vuecli5.x 这方面的记录, 写篇文章记…

腾讯内推 | 互联网大厂内推

分享 WLB、大厂内推&#xff0c;面经、热点新闻&#xff0c;可内推公司90&#xff0c;累计帮助6000 靠谱的内推君 专注于WLB、大厂精选内推&#xff0c;助力每位粉丝拿到满意的Offer&#xff01; 公司简述 腾讯以技术丰富互联网用户的生活。通过通信及社交平台微信和 QQ 促…

单模光模块和多模光模块有何区别,如何选择?

随着数据中心和5G应用的高速发展&#xff0c;光模块渐渐被越来越多的人所熟知&#xff0c;也得到了广泛应用。我们都知道&#xff0c;光模块可以根据参数类型来区分&#xff0c;如我们经常提到的单模光模块和多模光模块。那你知道单模光模块和多模光模块中的单模和多模分别代表…

基于物联网、移动互联网、一物一码等技术开发的质量溯源系统源码

什么是溯源系统? 溯源系统是物联网、移动互联网、一物一码等技术的整合应用。在产品生产过程中在重要环节可采集产品数据信息并形成产品溯源档案。从而形成产品从原料、生产加工、质量检测、物流运输等环节的信息监控。 溯源系统技术架构 技术架构&#xff1a;spring bootmy…

服务器数据库的防护策略与360后缀勒索病毒解密方法

在当今数字化时代&#xff0c;服务器数据安全面临着越来越多的挑战。其中&#xff0c;勒索病毒攻击就是一种常见的网络威胁之一&#xff0c;最近&#xff0c;很多的公司服务器数据库遭到了360后缀勒索病毒攻击&#xff0c;导致许多重要数据无法读取&#xff0c;一旦企业的数据库…

vue3和tauri直接下载Binary 数组的二进制文件内容到本地

通过发送url请求&#xff0c;直接获取到一个文件的Binary 数组内容&#xff0c;然后通过tauri的api&#xff1a;writeBinaryFile保存文件到本地电脑。 发送请求的时候&#xff0c;要加上响应类型&#xff1a;responseType: ResponseType.Binary 然后等返回的响应内容&#xf…

权限系统就该这么设计,稳的一批!

对于后台管理系统来说&#xff0c;权限功能已经是必不可少的一部分了。如果你用过一些快速开发脚手架&#xff0c;你会发现很多都直接集成了权限功能。把权限功能做成一个通用功能&#xff0c;非常有利于代码的复用。今天就以我的mall电商实战项目为例&#xff0c;来聊聊权限系…

防止重复请求,防止重复点击,解决:使用分布式锁,redisson,setnx简单实例

防止重复请求&#xff0c;解决&#xff1a;使用分布式锁&#xff0c;redisson&#xff0c;简单实例 通常情况下&#xff1a;synchronize在单机下是可以的&#xff0c;在分布式下不适用&#xff0c;nginx做分发到了不同的服务器后&#xff0c;不同的jvm是锁不住的&#xff0c;这…

【C语言进阶篇】常见动态内存分配的这六个错误你必须避免!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; 常见的动态内存错误1️⃣ 对NULL指针的解引用操作⌨️ 错误原因&#x1f4bb; 解决方法&…