当前位置: 首页 > news >正文

C++基础入门学习笔记

在这里插入图片描述

问题1:什么是 C++ 中的多态?如何实现多态?

回答1:C++ 中的多态是指同一种类型的实体,可以在不同的情况下表现出不同的行为。实现多态的方式有两种:虚函数和模板函数。虚函数是在基类中声明为虚函数的函数,可以在派生类中被重写,实现不同的行为。模板函数是一种通用的函数,可以用不同的类型实例化,实现不同的行为
以下是虚函数实现多态的示例代码:

class Animal {
public:virtual void makeSound() {cout << "Animal makes sound" << endl;}
};class Cat : public Animal {
public:void makeSound() {cout << "Cat meows" << endl;}
};class Dog : public Animal {
public:void makeSound() {cout << "Dog barks" << endl;}
};int main() {Animal* animal1 = new Cat();Animal* animal2 = new Dog();animal1->makeSound();animal2->makeSound();return 0;
}

问题2:什么是 C++ 中的模板?如何使用模板?

回答2:C++ 中的模板是一种通用的代码,可以用不同的类型实例化。模板可以用于函数和类。使用模板需要在代码中声明模板类型,使用尖括号(<>)来指定类型。以下是模板函数和模板类的示例代码:

模板函数:

template <typename T>
T max(T a, T b) {return a > b ? a : b;
}int main() {int a = 5, b = 10;cout << max(a, b) << endl;return 0;
}

模板类:

template <typename T>
class Stack {
private:T* data;int top;
public:Stack() {data = new T[100];top = -1;}void push(T value) {data[++top] = value;}T pop() {return data[top--];}
};int main() {Stack<int> intStack;intStack.push(1);intStack.push(2);cout << intStack.pop() << endl;cout << intStack.pop() << endl;return 0;
}

问题3:什么是 C++ 中的智能指针?如何使用智能指针?

回答3:C++ 中的智能指针是一种指针类型,可以自动管理指针的生命周期,避免内存泄漏和悬空指针的问题。智能指针可以使用 RAII(资源获取即初始化)技术来实现。C++ 中的智能指针有三种:unique_ptr、shared_ptr 和 weak_ptr。unique_ptr 是一种独占指针,只能有一个指针指向一个对象,当指针被销毁时,对象也会被销毁。shared_ptr 是一种共享指针,可以有多个指针指向一个对象,对象会在最后一个指针被销毁时被销毁。weak_ptr 是一种弱指针,可以指向一个对象,但不会增加对象的引用计数,不会影响对象的生命周期。

以下是智能指针的示例代码:

#include <memory>int main() {// unique_ptrstd::unique_ptr<int> ptr1(new int(5));std::unique_ptr<int> ptr2 = std::move(ptr1);std::cout << *ptr2 << std::endl;// shared_ptrstd::shared_ptr<int> ptr3(new int(10));std::shared_ptr<int> ptr4 = ptr3;std::cout << *ptr3 << std::endl;std::cout << *ptr4 << std::endl;// weak_ptrstd::shared_ptr<int> ptr5(new int(15));std::weak_ptr<int> ptr6 = ptr5;std::cout << *ptr5 << std::endl;std::cout << ptr6.expired() << std::endl;return 0;
}

C++是一种面向对象的编程语言,它是C语言的扩展。以下是C++基础学习的一些笔记:

基本数据类型

C++提供了以下基本数据类型:int, float, double, bool, char等。其中,int表示整数类型,float和double表示浮点数类型,bool表示布尔类型,char表示单个字符类型。

变量和常量

在C++中,变量是用于存储数据的标识符。变量的声明通常包括类型和名称。常量是不可更改的值,可以使用关键字const来声明常量。

运算符

C++支持各种运算符,包括算术运算符(+,-,*,/,%),关系运算符(==,!=,>,<,>=,<=),逻辑运算符(&&,||,!),位运算符(&,|,^,~,<<,>>)等。

控制语句

C++提供了各种控制语句,包括条件语句(if,else if,else),循环语句(for,while,do-while),跳转语句(break,continue,goto,return)等。这些语句可以帮助我们控制程序的流程和执行顺序。

函数

函数是一段可重用的代码,可以接受参数并返回值。在C++中,函数通常由函数头、函数体和返回值组成。函数可以帮助我们实现模块化编程,使代码更加清晰和易于维护。

数组和指针

数组是一组有序的元素,可以通过索引来访问。指针是一个变量,它存储了另一个变量的地址。在C++中,我们可以使用数组和指针来处理复杂的数据结构和算法。

类和对象

类是一种用户定义的数据类型,它包含数据成员和成员函数。对象是类的实例,它可以访问类的成员变量和函数。在C++中,类和对象是面向对象编程的核心概念。

以上是C++基础学习的一些笔记,希望对你有所帮助。

相关文章:

C++基础入门学习笔记

问题1&#xff1a;什么是 C 中的多态&#xff1f;如何实现多态&#xff1f; 回答1&#xff1a;C 中的多态是指同一种类型的实体&#xff0c;可以在不同的情况下表现出不同的行为。实现多态的方式有两种&#xff1a;虚函数和模板函数。虚函数是在基类中声明为虚函数的函数&…...

手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明

一、如何查看cpu加购 winR&#xff0c;输入cmd 填下指令如下 adb shell getprop ro.product.cpu.abi 二、架构描述 1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. 2.arm64-v8a: 第8代、64位ARM处理器&#xff0c;很少设备&a…...

node-sass报错,node16运行node14的项目

原来项目是node14的版本&#xff0c;现在用node16运行npm i 会报以下错误 node-sass4.14.1 postinstall: node scripts/build.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node-sass4.14.1 postinstall script. npm ERR! This is probably not a problem with …...

在Linux中掌握不同的命令,让创建文件变得易如反掌

在Linux中创建一个新文件很简单,但也有一些令人惊讶和灵巧的技术。​在本教程中,学习如何从Linux终端创建文件。​ 先决条件 访问命令行/终端窗口(Ctrl-Alt-F2或Ctrl-Alt-T) 具有sudo权限的用户帐户(对于某些文件/目录是可选的) 从命令行创建新的Linux文件 Linux的设计…...

iOS 14 YYAnimatedImageView加载图片失败处理

升级到iOS14&#xff0c;之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示&#xff0c;静态图无法显示&#xff1b; 原因是&#xff1a;14.0 系统调用了下面方法&#xff0c;YYAnimatedImageView没有正确处理 -(void)displayLayer:(CALayer )layer; 1 可以用以下…...

兴趣社如何搭建一个兴趣社区?

社交产品的本质是帮助用户提升社交的质量与效率&#xff0c;而兴趣则是找到本质的捷径。用户对兴趣社区的使用主要是围绕兴趣爱好&#xff0c;社交属性以及粉丝活动三个方向。对感兴趣的话题&#xff0c;用户天然有更强的分享讨论欲&#xff0c;更期待与人社交互动。“越垂直的…...

腾讯wifi码推广如何代理?方法详解!

腾讯wifi码推广是一种利用微信扫码连接商家wifi的方式&#xff0c;用户看完广告后就可以免费上网&#xff0c;而推广者则可以获得广告收益。 那么怎样代理腾讯wifi码推广呢&#xff1f; 答案是腾讯官方没有这个项目&#xff0c;那是怎么回事呢&#xff0c;腾讯wifi码正确的名称…...

linux下读取socket相关的系统调用总结

recv 函数原型 /* Read N bytes into BUF from socket FD.Returns the number read or -1 for errors.This function is a cancellation point and therefore not marked with__THROW. */ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 所属文件…...

kafka生产者发送消息报错 Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

报这个错误是因为kafka里的配置要修改下 在config目录下 server.properties配置文件 这下发送消息就不会一直等待&#xff0c;就可以发送成功了...

内存文件初始化

要在内存中初始化一个SQLite数据库文件&#xff0c;可以使用SQLite提供的特殊URI格式进行连接。以下是一种常见的方法&#xff1a; #include <sqlite3.h>int main() {sqlite3* db;// 在内存中创建或打开数据库文件int ret sqlite3_open(":memory:", &db)…...

【`opencv_core` 和 `opencv_imgcodecs` 是 OpenCV(开源计算机视觉库)的两个主要模块】

opencv_core 和 opencv_imgcodecs 是 OpenCV&#xff08;开源计算机视觉库&#xff09;的两个主要模块。下面简要描述这两个模块的主要功能&#xff1a; opencv_core: 这是 OpenCV 的核心模块&#xff0c;为其他 OpenCV 模块提供了基础的数据结构和函数。它包含了基本的数据类型…...

系统架构师备考倒计时24天(每日知识点)

模块独立性的度量 聚合&#xff1a;衡量模块内部各元素结合的紧密程度偶然聚合&#xff1a;模块完成的动作之间没有任何关系&#xff0c;或者仅仅是一种非常松散的关系。逻辑聚合&#xff1a;模块内部的各个组成在逻辑上具有相似的处理动作&#xff0c;但功能用途上彼此无关。…...

多无人机编队集群飞行

matlab2016b可直接运行 多无人机集群编队飞行&#xff08;8架无人机&#xff09;资源-CSDN文库...

【C++杂货铺】一文带你走进哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列

文章目录 一、unordered 系列关联式容器二、unordered_map1.1 unordered_map 介绍1.2 unordered_map 的接口说明1.2.1 unordered_map 的构造1.2.2 unordered_map 的容量1.2.3 unordered_map 的迭代器1.2.4 unordered_map 的元素访问1.2.5 unordered_map 的查询1.2.6 unordered_…...

docker 搭建本地Chat GPT

要在CentOS7上安装Docker&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1、更新系统包列表 sudo yum update2、安装Docker存储库的必要软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23、添加Docker存储库 sudo yum-config-manager --add…...

电脑怎么剪辑视频?高手分享的独家秘诀

视频剪辑是一项有趣而具有创造性的活动&#xff0c;可以帮助您将录制的视频片段转化为有趣、有启发性的作品。无论您是想创建家庭影片、Vlog视频、教程&#xff0c;还是其他任何类型的视频&#xff0c;掌握视频剪辑技巧都是必要的。那电脑怎么剪辑视频呢&#xff1f;在本篇文章…...

LCR 171.训练计划 V

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 171. 训练计划 V - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 双指针。node1 指向headA&#xff0c;node2 指向headB&#xff0c;将两节点每次移动一个节点直至两指针指向同一节点或…...

CH6-中断和异常处理

6.1 中断和异常处理概述 中断和异常概述&#xff08;INTERRUPT AND EXCEPTION OVERVIEW&#xff09; 中断和异常向量&#xff1a;中断和异常在处理器中都有对应的编号&#xff0c;被称为向量。当中断或异常发生时&#xff0c;处理器会根据向量找到相应的中断处理程序或异常处理…...

Hive的文件合并

背景:Flink数据写入到stage层,然后再入ods层,中间导致hive数据实时性不强,随后做优化,Flink之间以orc格式写入到hive 问题:单表日800亿数据量,产生过多的小文件,影响Impala查询 解决:对hive小文件进行合并, ALTER TABLE lt_ipsy_xdr_temp PARTITION (day20230829, hour9,type…...

Mac删除不在程序坞的程序

现象描述&#xff1a;删除某个程序时&#xff08;通过‘程序’列表中将该应用移动到废纸篓里&#xff09;&#xff0c;该应用程序正在运行中&#xff0c;删除过程该程序未提示正在运行中&#xff0c;仅仅删除了图标&#xff08;在此吐槽下该程序的交互&#xff0c;产品没有考虑…...

内网渗透实战:利用SSH密钥实现Linux主机间横向移动

1. SSH密钥横向移动的核心原理 当你第一次接触内网渗透时&#xff0c;可能会被各种复杂的技术术语吓到。其实SSH密钥横向移动的原理非常简单&#xff1a;就像用钥匙开锁一样&#xff0c;只要拿到目标主机的SSH私钥&#xff0c;就能像合法用户一样登录系统。我在实际渗透测试中发…...

用VSCode+PlatformIO给ESP32做个简易手表:基于LVGL和1.3寸屏的UI实战

基于LVGL的ESP32智能手表开发实战&#xff1a;从硬件驱动到UI设计全流程 在创客圈里&#xff0c;ESP32凭借其出色的性价比和丰富的功能接口&#xff0c;一直是物联网项目的热门选择。而当我们把目光投向更直观的人机交互领域时&#xff0c;LVGL&#xff08;Light and Versatile…...

Qwen3-14B私有部署镜像算法题求解助手:从理解到实现

Qwen3-14B私有部署镜像算法题求解助手&#xff1a;从理解到实现 1. 为什么算法工程师需要AI助手 算法工程师和求职者每天都要面对各种算法问题&#xff0c;从简单的排序到复杂的动态规划。传统方式下&#xff0c;我们需要反复查阅资料、手动编写测试用例、调试代码&#xff0…...

千问3.5-2B镜像免配置优势解析:supervisor自恢复+健康检查+7860端口标准化

千问3.5-2B镜像免配置优势解析&#xff1a;supervisor自恢复健康检查7860端口标准化 1. 千问3.5-2B镜像核心价值 千问3.5-2B是Qwen系列的小型视觉语言模型&#xff0c;专为图片理解与文本生成任务优化设计。这个开箱即用的镜像解决了传统AI模型部署中最让人头疼的三个问题&am…...

本地硬盘装系统神器更新!WinToHDD v7.0,支持加密/多分区安装

软件下载 夸克下载&#xff1a;https://pan.quark.cn/s/8bb2d79a1f4c迅雷下载&#xff1a;https://pan.xunlei.com/s/VOottCVsfGa3nDKv07YreMVPA1?pwdve85#UC下载&#xff1a;https://pan.xunlei.com/s/VOottCVsfGa3nDKv07YreMVPA1?pwdve85# 软件介绍 前几天一直看见有群友…...

AD20 原理图与PCB的协同设计:从单向更新到双向同步的进阶指南

1. AD20协同设计的基础概念 刚接触AD20时&#xff0c;最让我头疼的就是原理图和PCB之间的同步问题。记得第一次做多板卡项目&#xff0c;光是处理不同原理图之间的元件冲突就折腾了一整天。AD20的协同设计功能远比我们想象的强大&#xff0c;但要用好它&#xff0c;得先理解几个…...

3步掌握VectorBT:Python量化交易框架的终极指南

3步掌握VectorBT&#xff1a;Python量化交易框架的终极指南 【免费下载链接】vectorbt Find your trading edge, using the fastest engine for backtesting, algorithmic trading, and research. 项目地址: https://gitcode.com/gh_mirrors/ve/vectorbt 在量化交易的世…...

CMake实战:用ExternalProject_Add一键集成第三方库(附spdlog完整配置)

CMake实战&#xff1a;用ExternalProject_Add一键集成第三方库&#xff08;附spdlog完整配置&#xff09; 在C项目开发中&#xff0c;第三方库的集成往往是最耗时的环节之一。传统的手动下载、编译、配置头文件路径和链接库文件的方式&#xff0c;不仅效率低下&#xff0c;还会…...

Phi-3-Mini-128K多轮对话效果实测:复杂任务规划与分解

Phi-3-Mini-128K多轮对话效果实测&#xff1a;复杂任务规划与分解 最近&#xff0c;我花了不少时间深度体验了Phi-3-Mini-128K这款模型。它的名字里带着“128K”&#xff0c;这超长的上下文长度&#xff0c;让我特别好奇它在处理复杂、多轮对话时的真实表现。毕竟&#xff0c;…...

Vivado 2019.2实战:手把手教你封装自己的UART串口IP核(含参数化配置避坑指南)

Vivado 2019.2实战&#xff1a;从零构建可配置UART IP核的完整指南 在FPGA开发中&#xff0c;UART通信是最基础也最常用的功能之一。每次新项目都重新编写UART驱动不仅效率低下&#xff0c;还容易引入错误。本文将带你完整经历将一个经过验证的UART发送模块封装成可配置IP核的全…...