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删除不在程序坞的程序
现象描述:删除某个程序时(通过‘程序’列表中将该应用移动到废纸篓里),该应用程序正在运行中,删除过程该程序未提示正在运行中,仅仅删除了图标(在此吐槽下该程序的交互,产品没有考虑…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...