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

从零开始的C++(六)

1.类和对象补充:

静态成员,有静态成员函数和静态成员变量,特点是不为类的某个对象所有,而是为同类所有对象共有。因为是为同类对象共同拥有,所以计算对象的大小的时忽略静态成员。因为静态成员是放在静态区,对象的作用只是确定类域,所以(类名*)0->静态成员名是可以访问的,不会引发报错。

静态成员不能给缺省值,因为静态成员的初始化不是在初始化列表里进行,而是在类外进行。(假设是在初始化列表内进行,不就相当于一个对象对应一个静态成员了吗)同时,类内的只是声明,定义需要在类外(定义的时候需要写类名,且定义与声明必须分离)。

静态成员函数:无this指针,因为不是特别对于某个对象。

调用方式有三种:类名::函数名;对象名.函数名;类名().函数名;

静态成员函数内只能有静态成员,不能有非静态成员(因为没有this指针,无法访问非静态的)。但是非静态成员函数内可以有静态、非静态的成员。

利用构造函数、静态成员、定义数组可以实现一些简单的循环过程。(如从1加到n的求和等)

2.友元:

分为友元函数和友元类

友元函数:无this指针(因为不是成员函数),因为没有this指针,所以无法将const写在形参和函数体之间。一个函数可以是多个类的友元函数。友元函数在类内的声明可以在类内任何位置,且不受类内的访问限制符(如public/private等)的影响。

友元类:(注:很容易理解反!)  如果希望类A能访问类B的私有成员,则类A是类B的友元,类B内声明类A是友元。

友元类是单向的,如类A是类B的友元,则类A可以访问类B私有成员,但类B不能访问类A的私有成员。同时,友元类也没有传递性,比如类C是类A的友元,类A是类B的友元,但类C不是类B的友元,即类C不能访问类B的私有成员。

友元类很容易混,因此不建议多用!

3.内部类:

顾名思义,就是在一个类的声明内有另一个类的声明,此时“另一个类”就是内部类,而外部的就是外部类。

此时求外部类的大小的时候忽略内部类,因为内部类和外部类本质上是两个相互独立的类。

内部类的特点:1.受外部类的访问限定符和类域的影响。2.可以访问外部类的私有成员(内部类天生是外部类的友元)3.定义内部类的对象“外部类::内部类 +对象名。

4.编译器的某些优化

因为不同编译器、编译器版本的影响,优化的内容可能有所不同,此处主要说明一些比较常见的优化,了解即可。

1.函数实参、形参之间是值传递的时候,调用的是拷贝构造。(如果不重写拷贝构造是浅拷贝、重写可能是深拷贝)

2.匿名对象具有常性,如果引用一个匿名对象,则引用必须用const修饰。同时,匿名对象做函数实参,形参必须用const修饰。(在用const修饰以后,匿名对象的生命周期被延长,可以视为匿名对象转变成了有名对象(名字就是形参名或引用名))

3.在例如函数返回值、对象初始化时如果出现连续的构造、拷贝构造,编译器可以优化成一步构造。(常出现与用隐式转换、匿名对象的场合)。

4.函数返回值是一个对象时,是先把该对象用拷贝构造给一个临时对象,在用赋值的方式把临时对象赋给实际接收的对象。

5.拷贝构造和赋值不能合并。

5.内存管理:

1.C++兼容c,因此malloc、calloc、realloc、free等依然可以使用。其中calloc=malloc+memset,realloc有原地扩容和异地扩容两种。

2.C++特有的是new和delete.

利用new创建:new+类型:会自动计算大小,且不用强制类型转换,对于内置类型不处理,对自定义类型会调用默认构造(能调用构造函数是其一大特点)。此时销毁delete 指针名。

创建数组:new+类型(个数),此时销毁delete[]指针名。

开辟空间同时初始化:new+类型[初始化的值]或new+类型{值1、值2、值3...}

malloc和new的区别:malloc对于自定义类型不做处理,但new可以自动调自定义类型的构造函数,并且可以初始化。同时,delete也会自动调用析构函数并释放空间。

一般的,初始化自定义类型常用匿名函数和隐式类型转换。

相关文章:

从零开始的C++(六)

1.类和对象补充: 静态成员,有静态成员函数和静态成员变量,特点是不为类的某个对象所有,而是为同类所有对象共有。因为是为同类对象共同拥有,所以计算对象的大小的时忽略静态成员。因为静态成员是放在静态区&#xff0…...

leetcode 518. 零钱兑换 II、377. 组合总和 Ⅳ

518. 零钱兑换 II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 …...

【网络安全 --- kali2022安装】kali2022 超详细的安装教程(提供镜像)

如果你还没有安装vmware 虚拟机,请参考下面博客安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0…...

网络安全(黑客)——自学笔记

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“…...

【C++】List -- 详解

一、list的介绍及使用 https://cplusplus.com/reference/list/list/?kwlist list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list 的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中&…...

浅谈.net 垃圾回收机制(1)

大家都知道.net程序创建对象后没法写代码销毁对象,它有它自己的处理机制,今天来大概说说它的原理,探讨下它是如何管理对象即管理内存的 在程序里使用new 关键字实例化一个对象 如果这个对象类型是引用类型则在堆上分配然后由GC管理 new 操作…...

超大视频如何优雅切片

背景 有一次录屏产生了一个大小为33G的文件, 我想把他上传到B站, 但是B站最大只支持4G. 无法上传, 因此做了一个简单的探索. 质疑与思考 a. 有没有一个工具或一个程序协助我做分片呢? 尝试 a. 必剪 > 有大小限制, 添加素材加不进去(而且报错信息也提示的不对) b. PR &…...

计算机竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...

Spring总结的question

Spring 一. 控制反转(IoC) 1.手动 使用了Spring的Configuration和Bean注解来明确指定了哪些类需要被纳入容器的管理。在AppConfig配置类中,通过Bean注解创建了Service和Controller的实例,Spring会自动将这些实例纳入容器的管理,并处理它们…...

LVS和keepalived

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器&#x…...

2023年腾讯云优惠券(代金券)无门槛领取方法汇总

腾讯云作为国内知名的云计算服务提供商,为了吸引用户,腾讯云经常推出各种优惠活动,其中包括优惠券的免费发放。通过使用优惠券,可以享受到更多的折扣和优惠,节省成本,获得更好的用户体验。那么,…...

linux scsi命令读取文件

SCSI Read(10)是一种用于从SCSI设备读取数据的命令。下面是一个简单的示例代码&#xff0c;演示如何使用SCSI Read(10)命令来读取指定大小的文件&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>#define READ_CAPACITY_CMD 0x2…...

c#设计模式-行为型模式 之 策略模式

&#x1f680;简介 &#x1f424;作为一个开发人员&#xff0c;开发需要选择一款开发工具&#xff0c;如在编写C#时&#xff0c;我们可以选择VisualStudio进行开发&#xff0c;也可以使用Rider 进行开发。 &#x1f433;该模式定义了一系列算法&#xff0c;并将每个算法封装起来…...

【拿完年终奖后】想要转行网络安全,一定不要错过这个时间段。

网络安全&#xff0c;作为当下互联网行业中较为热门的岗位&#xff0c;薪资可观、人才需求量大&#xff0c;作为转行必考虑。 在这里奉劝所有零基础想转行&#xff08;入门&#xff09; 网络安全的朋友们 在转行之前&#xff0c;一定要对网络安全行业做一个大概了解&#xf…...

day10_复习_数组_方法

非常重要的: 方法设计(参数,返回值,调用) 数组也重要,但是后续很少用! 是因为后期有更简单的【集合】&#xff0c;重要在于是一种思想&#xff0c;也是一种代码逻辑 关于数组: 声明创建取值,存值遍历面试|算法 --> 排序内存图(堆,栈,引用) 今天 数组工具类:Arrays数组扩容(拷…...

Linux:TCP三握四挥简析

文章目录 1. 前言2. 背景3. TCP连接的建立和断开3.1 TCP协议状态机3.2 TCP的三握四挥3.2.1 TCP 连接建立的三次握手过程分析3.2.1.1 服务端和客户端套接字的创建3.2.1.2 服务端进入 LISTEN 状态3.2.1.3 服务端在 LISTEN 状态等待客户端的 SYN 请求3.2.1.4 客户端向服务端发送 S…...

2023年全球市场数字干膜测量仪总体规模、主要生产商、主要地区、产品和应用细分研究报告

内容摘要 按收入计&#xff0c;2022年全球数字干膜测量仪收入大约149.2百万美元&#xff0c;预计2029年达到191.6百万美元&#xff0c;2023至2029期间&#xff0c;年复合增长率CAGR为 3.6%。同时2022年全球数字干膜测量仪销量大约 &#xff0c;预计2029年将达到 。2022年中国市…...

Python爬虫脚本的基本组成

一个基本的Python爬虫脚本通常由以下几部分组成&#xff1a; 导入必要的库&#xff1a;Python中有许多库可用于爬虫&#xff0c;如requests用于发送HTTP请求&#xff0c;BeautifulSoup用于解析HTML或XML&#xff0c;selenium用于模拟浏览器操作等。你需要根据你的需求导入相应…...

IIS部署Flask

启用 CGI 安装wfastcgi pip install wfastcgi 启用 wfastcgi 首先以管理员身份运行wfastcgi-enable来在IIS上启用wfastcgi&#xff0c;这个命令位于c:\python_dir\scripts&#xff0c;也就是你需要确保此目录在系统的PATH里&#xff0c;或者你需要cd到这个目录后再执行。 #…...

告警繁杂迷人眼,多源分析见月明

随着数字化浪潮的蓬勃兴起&#xff0c;网络安全问题日趋凸显&#xff0c;面对指数级增长的威胁和告警&#xff0c;传统的安全防御往往力不从心。网内业务逻辑不规范、安全设备技术不成熟都会导致安全设备触发告警。如何在海量众多安全告警中识别出真正的网络安全攻击事件成为安…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...