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:什么是 C 中的多态?如何实现多态? 回答1:C 中的多态是指同一种类型的实体,可以在不同的情况下表现出不同的行为。实现多态的方式有两种:虚函数和模板函数。虚函数是在基类中声明为虚函数的函数&…...
手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明
一、如何查看cpu加购 winR,输入cmd 填下指令如下 adb shell getprop ro.product.cpu.abi 二、架构描述 1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. 2.arm64-v8a: 第8代、64位ARM处理器,很少设备&a…...
node-sass报错,node16运行node14的项目
原来项目是node14的版本,现在用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,之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示,静态图无法显示; 原因是:14.0 系统调用了下面方法,YYAnimatedImageView没有正确处理 -(void)displayLayer:(CALayer )layer; 1 可以用以下…...
兴趣社如何搭建一个兴趣社区?
社交产品的本质是帮助用户提升社交的质量与效率,而兴趣则是找到本质的捷径。用户对兴趣社区的使用主要是围绕兴趣爱好,社交属性以及粉丝活动三个方向。对感兴趣的话题,用户天然有更强的分享讨论欲,更期待与人社交互动。“越垂直的…...
腾讯wifi码推广如何代理?方法详解!
腾讯wifi码推广是一种利用微信扫码连接商家wifi的方式,用户看完广告后就可以免费上网,而推广者则可以获得广告收益。 那么怎样代理腾讯wifi码推广呢? 答案是腾讯官方没有这个项目,那是怎么回事呢,腾讯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配置文件 这下发送消息就不会一直等待,就可以发送成功了...
内存文件初始化
要在内存中初始化一个SQLite数据库文件,可以使用SQLite提供的特殊URI格式进行连接。以下是一种常见的方法: #include <sqlite3.h>int main() {sqlite3* db;// 在内存中创建或打开数据库文件int ret sqlite3_open(":memory:", &db)…...
【`opencv_core` 和 `opencv_imgcodecs` 是 OpenCV(开源计算机视觉库)的两个主要模块】
opencv_core 和 opencv_imgcodecs 是 OpenCV(开源计算机视觉库)的两个主要模块。下面简要描述这两个模块的主要功能: opencv_core: 这是 OpenCV 的核心模块,为其他 OpenCV 模块提供了基础的数据结构和函数。它包含了基本的数据类型…...
系统架构师备考倒计时24天(每日知识点)
模块独立性的度量 聚合:衡量模块内部各元素结合的紧密程度偶然聚合:模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。…...
多无人机编队集群飞行
matlab2016b可直接运行 多无人机集群编队飞行(8架无人机)资源-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,您可以按照以下步骤进行操作: 1、更新系统包列表 sudo yum update2、安装Docker存储库的必要软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23、添加Docker存储库 sudo yum-config-manager --add…...
电脑怎么剪辑视频?高手分享的独家秘诀
视频剪辑是一项有趣而具有创造性的活动,可以帮助您将录制的视频片段转化为有趣、有启发性的作品。无论您是想创建家庭影片、Vlog视频、教程,还是其他任何类型的视频,掌握视频剪辑技巧都是必要的。那电脑怎么剪辑视频呢?在本篇文章…...
LCR 171.训练计划 V
题目来源: leetcode题目,网址:LCR 171. 训练计划 V - 力扣(LeetCode) 解题思路: 双指针。node1 指向headA,node2 指向headB,将两节点每次移动一个节点直至两指针指向同一节点或…...
CH6-中断和异常处理
6.1 中断和异常处理概述 中断和异常概述(INTERRUPT AND EXCEPTION OVERVIEW) 中断和异常向量:中断和异常在处理器中都有对应的编号,被称为向量。当中断或异常发生时,处理器会根据向量找到相应的中断处理程序或异常处理…...
Hive的文件合并
背景:Flink数据写入到stage层,然后再入ods层,中间导致hive数据实时性不强,随后做优化,Flink之间以orc格式写入到hive 问题:单表日800亿数据量,产生过多的小文件,影响Impala查询 解决:对hive小文件进行合并, ALTER TABLE lt_ipsy_xdr_temp PARTITION (day20230829, hour9,type…...
Mac删除不在程序坞的程序
现象描述:删除某个程序时(通过‘程序’列表中将该应用移动到废纸篓里),该应用程序正在运行中,删除过程该程序未提示正在运行中,仅仅删除了图标(在此吐槽下该程序的交互,产品没有考虑…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
