一些关于c++的琐碎知识点

news2024/11/24 7:03:28

目录

bool强转

const构成重载:const修饰*p

 移动构造

new int (10)所做的四件事

this指针---为什么函数里面需要this指针?

.和->的区别

new创建对象

仿函数

new和malloc的区别

c++系统自动给出的函数有

delete和delete[ ]区别何在

检查有没有析构函数

explict外部

内存泄漏的本质:丢失了内存地址

不能重载的运算符:?:、::、*.

using

为什么空间释放了但还是可以读取数据

函数的生存期不受函数生存期影响时,可以使用引用返回;

struct和class在设计类时的区别

结构体为什么一定要内存对齐?

c++11的铁三角

右值/左值/值返回与将亡值

a++不可以取地址;++a可以取地址

引用的本质是指针,自身为常性


bool强转

可以将变量变为bool类型,在if语句中可以判断

operator bool() const
{
    return (ptr !=nullptr);
}

const构成重载:const修饰*p

void func(int *p){}
void func(const int* p){}

 移动构造

my_unique_ptr(const my_unique_ptr&& x)
{
    ptr = x.ptr;
    x.ptr = nullptr;
}

拷贝构造和移动构造同时书写了,那么就会调用移动构造

new int (10)所做的四件事

1.计算10的大小 2.malloc 3.赋值 4.返回所在地址

new没有能力去构造常对象 

is具有常性,不可以对is的指向进行修改。

 const修饰*is,is的指向可以修改

this指针---为什么函数里面需要this指针?

  • 创建对象类型有多个,方法共享只有一个,用this来调用函数方法
  • 系统是面向过程编程,底层把面向对象编程变为面向过程的体系
  • 类的成员函数都含有this指针,只有static,友元,全局没有this指针。

.和->的区别

.  的时候函数都是智能指针的方法

 -> 的时候函数都是 类 类 型 的方法

new创建对象

std::unique_ptr<Int> ip(new(10));
 
std::unique_ptr<Int> sp=new Int(100);

仿函数

struct ADD
{
    int operator()(int a, int b) const//仿函数()
    {
        return a + b;
    }
};
 
int main()
{
    ADD add;
    int x = add(12, 23);//调用仿函数
    //标准c++没有三元仿函数
    x = add.operator()(12, 23);//把括号当成函数名了
}

new和malloc的区别

  • 失败处理方式不同,new会抛出异常,malloc不会
  • new有构造函数予以赋值
  • new有重载运算符

c++系统自动给出的函数有

  • 缺省的构造
  • 缺省的拷贝构造
  • 缺省的析构
  • 缺省的赋值

 !!!以上四个必须有

delete和delete[ ]区别何在

int main()
{
    Int* p=new Int(10);
    Int*s =new Int[10];
 
    delete p;
    delete[]s;
    return 0;
}

检查有没有析构函数

小tips:写代码判断是否相等时得把常量放在左边,变量放在右边

explict外部

内存泄漏的本质:丢失了内存地址

不能重载的运算符:?:::*.

using

是类型重定义(命名),和typdef的意义差不多

为什么空间释放了但还是可以读取数据

int ar[100000];栈帧构建的太大,数据在接近栈处,即使把空间释放了,但是在处理过程中无法干扰数据,所以值还是可以被打印出来

函数的生存期不受函数生存期影响时,可以使用引用返回;

struct和class在设计类时的区别

* 1.模板类型定义class可以,typename可以,struct不可以

* 2.struct默认公有,class默认私有

* 3.在设计类型时,纯虚函数interface

*/

结构体为什么一定要内存对齐?

结构体内存对齐是拿空间换取时间的做法。提高效率

c++11的铁三角

C++11和C11都是C++11

右值/移动/完美转发

右值/左值/值返回与将亡值

 通用寄存器eax,ebx,ecx,edx(都只有四字节),作为将亡值的返回时的保存

 如何将结构体初始化后返回到调用函数内?

值返回时 会在主函数中建立一个将亡值的副本,把调用函数返回值(将亡值)赋给指针(内置类型)产生的将亡值不可写

 将亡值没有名字就是纯右值(归结到右值中),有名字就是泛左值(归结到左值中)

 将亡值在表达式的计算中产生

将亡值可修改吗:

1.内置类型值返回时的将亡值不可以修改

2.类类型(即程序员自己设计的类型)值返回时的将亡值可修改

a++不可以取地址;++a可以取地址

a++是一个没有名字的将亡值(a+1) 还没有给a赋值,取地址(先取地址再++)

++a是先把将亡值(a+1)已经赋值给了a,再取地址(先++再取地址)

引用的本质是指针,自身为常性

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

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

相关文章

六一,用前端做个小游戏回味童年

#【六一】让代码创造童话&#xff0c;共建快乐世界# 文章目录 &#x1f4cb;前言&#x1f3af;简简单单的弹球游戏&#x1f3af;代码实现&#x1f4dd;最后 &#x1f4cb;前言 六一儿童节。这是属于孩子们的节日&#xff0c;也是属于我们大人的节日&#xff08;过期儿童&…

chatgpt赋能python:**Python免费编辑器:提高开发效率和便捷性**

Python 免费编辑器&#xff1a;提高开发效率和便捷性 Python 编程语言已经成为了越来越多开发者的首选。这是因为 Python 语言非常直观易懂&#xff0c;同时也拥有庞大的第三方开源库&#xff0c;方便开发人员快速实现项目功能。Python 编程之所以如此受欢迎&#xff0c;除了这…

Java基础编程

Java入门 1. JDK的安装目录介绍 目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件。include该路径下存放了一些平台特定的头文件。jmods该路径下存放了JDK的各种模块。legal该路径下存放了JDK各模块的授权文…

使用kettle进行数据统计

1.使用kettle设计一个能生成100个取值范围为0到100随机整数的转换。 为了完成该转换&#xff0c;需要使用生成记录控件、生成随机数控件、计算器控件及字段选择控件。控件布局如下图所示 生成记录控件可以在限制框内指定生成记录的个数&#xff0c;具体配置如图所示 生成随机数…

chatgpt赋能python:Python免费教学:让编程更便捷

Python免费教学&#xff1a;让编程更便捷 Python是一门广泛应用于机器学习、数据分析、网络编程和自动化测试等领域的高级编程语言。随着人工智能和大数据分析的兴起&#xff0c;Python的应用广泛受到了各个行业的欢迎&#xff0c;越来越多的人开始学习Python。在这篇文章中&a…

STM32之任务的创建与删除

目录 1. 什么是任务&#xff1f; 2. 任务创建与删除相关函数 任务动态创建与静态创建的区别&#xff1a; xTaskCreate 函数原型 官方案例&#xff1a; vTaskDelete 函数原型 3. 实操 1. 什么是任务&#xff1f; 任务可以理解为进程 / 线程&#xff0c;创建一个任务&#…

【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第2章 - 人体几何学测量与仿真建模

第1章回到目录第3章 文章目录 2.1 概论2.2 人体几何学测量2.2.1 人体外部几何形态2.2.2 人体尺寸测量与统计处理2.2.3 中国人体尺寸标准统计测量数据2.2.4 人体各部位比例及人体间尺寸换算2.2.5 人体活动范围测量 2.3 人体骨肌系统三维几何建模的数据来源2.3.1 冷冻切片数字摄像…

“微商城”项目(2准备工作)

一.安装Node.js 本项目使用Vue.js前端框架进行开发&#xff0c;在创建项目之前需要先下载Node.js环境。Node.js是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;它可以让JavaScript运行在服务器端。接下来对Node.js的下载和安装进行详细讲解。 打开Node.js官方网站&a…

RabbitMQ高频面试题

RabbitMQ的使用场景 异步发送消息&#xff08;验证码、短信、邮件…&#xff09;mysql、redis、es之间的数据同步分布式事务削峰填谷… 面试题&#xff1a;RabbitMQ如何保证消息不丢失 消息丢失原因 生产者发送的消息未到达交换机交换机未把消息路由到队列mq服务器宕机&…

辅助驾驶功能开发-功能算法篇(1)-ACC-多目标选择

1、总体架构 2、漏斗概念(Funnel) 路径漏斗是围绕着自车预测轨迹的一片区域。换言之,漏斗的中心应该根据预测的轨迹方向相应的弯曲。 2.1、普通&略宽漏斗(Normal Funnel & Wider Funnel) 普通漏斗用于选择路径中最近的目标车辆A和次近的车辆B。 更宽的漏斗用于选择…

@SentinelResource和openFeign+sentinel 对远程调用熔断降级加规则持久化的具体实 现

SentinelResource 自定义全局限流处理类 需求分析/图解 先看前面的一段代码 这个就是上面的Sentinel 热点规则 注意看我们的限制处理方法在本类中代码的耦合度高 阅读性差 不利于程序的扩展 SentinelResource的作用就是解决这个需求将处理方法放到一个类中 GetMapping("…

Docker从入门到会搭建一个简单的系统

一、环境准备 1、查看Llinux的版本 [rootlocalhost ~]# cat /etc/redhat-release 2、关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld.service 3、设置开机不启动防火墙 [rootlocalhost ~]# systemctl disable firewalld.service 二、Docker的安装 1、Docker是中高…

单片机GD32F303RCT6 (Macos环境)开发 (三十二)—— GD32 SPI主从实验 中断模式

GD32 SPI主从实验 中断模式 1、接线 SPI0 PA4 PA5 PA6 PA7SPI1 PB12 PB14 PB14 PB15采用全双工模式SPI0 SPI1CS PA4----------------PB12CLK PA5----------------PB13MISO PA6----------------PB14MOSI PA7----------------PB152、spi0 主设…

chatgpt赋能python:Python简单游戏开发入门

Python简单游戏开发入门 Python作为一门流行的编程语言&#xff0c;可以用来开发各种各样的应用&#xff0c;包括游戏。虽然Python不是游戏开发的主流语言&#xff0c;但我们可以用它来制作一些简单而有趣的游戏。在这篇文章中&#xff0c;我们将介绍如何用Python创建一个简单…

批量剪辑视频工具源码开发搭建分享

搭建步骤 1. 首先需要根据自身产品确定视频类型及需要实现的视频效果 2. 根据预期视频效果选择视频上传模式&#xff0c;并将视频素材进行上传 3. 添加音频、字幕&#xff0c;标题等与素材进行组合。 4. 设置投放计划&#xff0c;包括&#xff1a;视频标题、视频话题等 5.…

Are Emergent Abilities of Large Language Models a Mirage?

Paper name Are Emergent Abilities of Large Language Models a Mirage? Paper Reading Note Paper URL: https://arxiv.org/pdf/2304.15004.pdf Video URL: https://www.youtube.com/watch?vhZspGdApDIo TL;DR 2023 年斯坦福的研究&#xff0c;探索大语言模型表现出涌…

LeetCode 1552. Magnetic Force Between Two Balls【二分,排序,贪心】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

内存栈与CPU栈机制

1. 内存栈: 先入后出,LIFO(LAST IN FIRST OUT) 入栈:将一个新的元素放到栈顶 出栈:从栈顶取出一个元素 栈顶元素总是最后一个入栈,需要时出栈. 2.CPU栈机制 8086CPU提供相关指令以栈方式来访问内存空间.相当于将一段内存当做栈来使用 8086CPU提供的入栈指令为:PUSH ,出栈指令为…

【Linux】序列化和反序列化

目录 &#x1f308;前言&#x1f338;1、应用层&#x1f33a;2、重谈协议&#x1f341;3、网络计算器&#x1f361;3.1、定制协议&#x1f362;3.2、样例代码 &#x1f308;前言 这篇文章给大家带来序列化和反序列化的学习&#xff01;&#xff01;&#xff01; &#x1f338;…

chatgpt赋能python:Python倒序for:如何优化循环遍历

Python倒序for&#xff1a;如何优化循环遍历 Python作为一门高级编程语言&#xff0c;一直以来都在开发者中得到广泛的应用。在日常的编程工作中&#xff0c;遍历列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是很常见的操作。而对于列表或元组的倒序…