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

目录

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,再取地址(先++再取地址)

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BTC API:如何在比特币网络上创建应用程序?

比特币是一种去中心化的数字货币&#xff0c;可以通过比特币API与比特币网络进行交互。比特币API是一组允许开发人员与比特币网络进行交互的编程接口&#xff0c;可以帮助开发者构建各种比特币应用程序。 比特币API可以用于创建区块浏览器、钱包和比特币支付。其中利用比特币A…

Android-Activity生命周期

文章参考&#xff1a;添加链接描述 文章参考&#xff1a;添加链接描述 五大状态 StartingRunningStoppedPausedDestroyed 借用一张已经包浆的图 PS&#xff1a;Running和Paused是可视阶段&#xff0c;其余都是不可视 几大函数 onCreate&#xff1a;通过setContentLayout初始…

Markdown笔记应用程序Note Mark

什么是 Note Mark Note Mark 是一种轻量、快速、简约&#xff0c;基于网络的 Markdown 笔记应用程序。具有时尚且响应迅速的网络用户界面。 安装 在群晖上以 Docker 方式安装。 ghcr.io 镜像下载 官方的镜像没有发布在 docker hub&#xff0c;而是在 ghcr.io&#xff0c;所以…

iptables和防火墙

文章目录 1.防火墙2.Iptables基本介绍2.1 什么是iptables2.2 什么是包过滤防火墙2.3 包过滤防火墙如何实现 1.防火墙 Linux防火墙主要工作在网络层&#xff0c;针对 TCP/IP 数据包实施过滤和限制&#xff0c;典型的包过滤防火墙&#xff0c;基于内核编码实现&#xff0c;具有非…

什么是低代码开发?低代码开发可以解决哪些问题?

一、什么是低代码开发&#xff1f; 低代码可以理解为是一种全新的应用开发理念。主要以可视化、参数化的系统配置方式来进行程序应用的开发&#xff0c;因此可以大幅度减少代码编写的工作&#xff0c;从而提高开发效率。 低代码平台则是通过对于业务场景进行高度抽象、提炼&…

unittest单元测试框架

背景 unittest也称为PyUnit&#xff0c;是借鉴Java中JUnit框架产生。 unittest使我们具备创建测试用例、测试套件、测试夹具的能力。 组成 Test Fixture&#xff08;测试夹具&#xff09;&#xff1a;可以定义在单个或多个测试执行之前的准备工作和测试执行之后的清理工作。…

【P42】JMeter 运行时间控制器(Runtime Controller)

文章目录 一、运行时间控制器&#xff08;Runtime Controller&#xff09;参数说明二、测试计划设计 一、运行时间控制器&#xff08;Runtime Controller&#xff09;参数说明 可以通过时间来确定其后代元素运行多长时间&#xff0c;在时间范围内&#xff0c;后代元素会一直运…

八、(重点)视图集ModelViewSet自定义action路由routers

上一章&#xff1a; 七、Django DRF框架GenericAPIView--搜索&排序&分页&返回值_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 九、DRF生成API文档_做测试的喵酱的博客-CSDN博客 1、View 最基础的视图类View 2、views.APIView class APIView(View): …

kafka 的内部结构和 kafka 的工作原理

基本设置 让我们开始安装kafka。下载最新的 Kafka 版本并解压缩。打开终端并启动 kafka 和 zookeeper。 $ cd $HOME $ tar -xzf kafka_<version>.tgz $ cd kafka_<version> $ bin/zookeeper-server-start.sh config/zookeeper.properties # open another termina…

Canvas画布基本功能及实现网页签名功能

canvas 简介 <canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画&#xff0c;甚至可以进行实时视频处理和渲染。和所有 DOM 元素一样&#xff0c;拥有自己…

Elasticsearch:数据是如何被写入的?

在我之前的文章 “Elasticsearch&#xff1a;索引数据是如何完成的”&#xff0c;我详述了如何索引 Elasticsearch 的数据的。在今天的文章中&#xff0c;我将从另外一个视角来诠释如何写入数据到 Elasticsearch。更多关于 Elasticsearch 数据操作&#xff0c;请阅读文章 “Ela…

实体店引流获客系统模式开发详解

随着互联网的日益发展&#xff0c;实体店的处境变得越来越艰难&#xff0c;获客难和销量差成为了实体店最头疼的两大问题。面对这种情况&#xff0c;一味固步自封是不行的&#xff0c;最好还是顺应潮流&#xff0c;结合一款合适的商业模式&#xff0c;来帮助自己快速引流获客和…

深入理解设计原则之接口隔离原则(ISP)【软件架构设计】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C并发线程编程 LSP&#xff1a;接口隔离原则 系列文章目录1、接口隔离原则的定义和解读2、案例解读3、如何判断一个接口是否符合接口隔离原则&#xff1f;小结 1、接口隔离原则的定义和…

canal server 标准化集群搭建(完结)

4.2. 创建 server 所属集群&#xff1a;选择刚才添加的 “集群名称” server 名称&#xff1a; server_1、server_2、server_3 依次类推 server ip&#xff1a;server 的 ip 地址 admin 端口&#xff1a;canal server 与 canal admin 的通信端口&#xff0c;非生产环境从 2…

云南LED、LCD显示屏系统建设,户外、室内广告大屏建设方案

LED大屏幕显示系统是LED高清晰数字显示技术、显示单元无缝拼接技术、多屏图像处理技术、信号切换技术、网络技术等科技手段的应用综合为一体&#xff0c;形成一个拥有高亮度、高清晰度、技术先进、功能强大、使用方便的大屏幕投影显示系统。通过大屏幕显示系统&#xff0c;可以…

3.1 矩阵连乘问题

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 学习目标&#xff1a; 如果我要学习动态规划中的矩阵连乘问题&#xff0c;我会采取以下学习方法&#xff1a; 1. **理解问题的背景和目标&#xff1a;首…

【MySQL】如何速通MySQL(2)

&#x1f4cc;前言&#xff1a;本篇博客介绍如何速通MySQL的第二篇&#xff0c;主要介绍Mysql中主要的基础的入门&#xff0c;学习MySQL之前要先安装好MySQL&#xff0c;如果还没有安装的小伙伴可以看看博主前面的博客&#xff0c;里面有详细的安装教程。或者看一下下面这个链接…

SpringMVC第七阶段:SpringMVC的增删改查(01)

SpringMVC的增删改查 1、准备单表的数据库 drop database if exists springmvc;create database springmvc;use springmvc; ##创建图书表 create table t_book(id int(11) primary key auto_increment, ## 主键name varchar(50) not null, ## 书名 author varchar(50) no…

解决高并发

目录 1.4 对比单体系统、分布式系统和微服务系统 1.4.1 单体系统之痛 1、什么是单体系统 2、单体系统面临的问题 1.4.2 高并发系统之分布式架构 1.4.3 高并发系统之微服务架构 1.4 对比单体系统、分布式系统和微服务系统 接下来从企业真实场景出发&#xff0c;对比单体系统…

JavaEE进阶(5/29)SpringMVC

目录 1.复习 2.URL传参PathVariable 3.上传文件RequestPart 4.获取Cookie/Session/header 5.传统/维新获取cookies 6.传统/维信获得Header 7.获取Session&#xff08;非常重要&#xff09; 8.不加ResponseBody 9.如何获取Json数据&#xff0c;RequestBody 10.想…