C++知识点

1.

构造函数:当没有写任何构造函数(含拷贝构造),系统会生成默认的无参构造,并且访问属性是共有。

默认拷贝构造:当没有写任何的拷贝构造,系统会生成默认的拷贝构造->是一个浅拷贝

写了拷贝构造函数,这两默认的就都没有了。

在c++中一个类可以有多个构造函数,被称为构造函数的重载。但是析构函数只能有一个。

2.

new delete maloc free的区别

new delete:调用对象的构造和析构初始化对象和清理对象。是安全的它们知道要分配和释放的对象类型。

malloc free:用于分配和释放内存块,而不是对象,是不安全的,返回void*,需要显式类型转换。

3.

常量指针指向一个常量数据,通过这个指针不能修改所指向的数据内容。

const int* p1;

int a=10;

const int b=20;

p1=&a;合法

*p1=30;不合法

p1=&b;合法

指针常量,指针常量本身是一个常量,这意味着一旦初始化后,指针的地址不能再改变,但是通过这个指针可以修改它所指向的内容。

int* const p2;

int a=10;

int b=20;

int* const p2=&a;//p2必须在定义时初始化

*p2=30;合法

p2=&b;不合法

const int c=33;

int* const p3=&c;//不合法

4.

static修饰成员属性:不依赖对象,类共用的,不可以被继承,类外初始化,不能在.h文件初始化(重定义问题),要在.cpp 文件初始化。

static 修饰成员函数:没有this指针,可以不依赖对象使用,类共用的,不可以声明为虚函数,不能直接调用类中的非静态成员,可以利用对象调用。

普通成员函数不但可以直接调用其他的普通成员函数,也可直接使用静态成员函数。

反过来不行,没this指针。

static类外:只在当前文件中可见。只初始化一次。

5.

virtual修饰虚函数,实现动态多态,哪些函数不能用virtual修饰,static,构造,友元,普通,类外,内联(编译确定展开,虚函数运行时确认)

子类重写父类的方法时,如果父类的方法是虚函数,那么子类的方法即使不显示地使用virtual,也是虚函数。

虚函数重写函数原型不用一模一样,例如协变:如果返回类型是指针或引用,重写函数可以使用基类返回类型的派生类,这称为协变返回类型

virtual Base* clone() const{return new Base(*this);}

Derived* clone() const override{return new Derived(*this);}

6.

inline内联函数:适用于代码少,调用频繁的函数,编译时,在执行的位置直接展开函数,是空间来换时间的操作。递归函数不能是内联函数,会导致代码膨胀,使得程序的可读性和可维护性大大降低栈溢出。

7.

多态时使用的是父类的虚函数列表错:多态性是基于派生类的虚函数表来实现的。当通过基类指针或引用调用虚函数时,实际调用的是派生类的虚函数表中的函数。

多态下子类定义了未重写的虚函数,由于不能通过父类指针调用,所以其并未出现在虚函数列表中。错即使子类定义了一个新的虚函数,而没有在基类中声明,该虚函数仍然会出现在子类的虚函数表中。通过父类指针无法调用的原因是父类中没有定义这个虚函数,而不是因为它不存在于虚函数表中。

8.

一个类对象可以包含虚函数列表的入口地址,不能包括静态成员属性,因为静态成员属性是类的属性,不是对象的属性,成员函数定义的变量是局部变量,类中虚函数成员函数的入口地址存在类的虚函数表中,而不是对象本身。

9.

c++中最小的编译单元是单个 .cpp 文件。

10.

使用 new 操作符,可以动态分配全局堆中的内存资源

一些情况下可以用free释放new,但是不推荐。

用 new 申请的空间,即使不调用 delete 释放空间,当程序退出时也会被回收在大多数操作系统中,当程序退出时,操作系统会自动回收程序占用的内存资源,包括由 new 运算符动态分配的内存空间。依赖程序退出时的内存回收会使得程序的资源管理不确定。在程序执行过程中,如果动态分配了大量内存而没有及时释放,可能会导致系统资源的浪费,甚至是内存泄漏。

11.

函数重载的特点:相同函数名,不同参数列表,返回类型不影响函数重载,一个类中定义了两个同名且参数列表也相同的函数,但其中一个是常成员函数也是函数重载,一个类中定义了两个同名且参数列表也相同的函数,但其中一个是静态成员函数。这不是函数重载,静态成员函数属于类本身,而非某个特定的对象实例。

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

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

相关文章

Kaggle线上零售 CRM分析(RFM+BG-NBD+生存分析+PySpark)

数据集地址:数据集地址 我的NoteBook地址:NoteBook地址 这个此在线零售数据集包含2009年12月1日至2011年12月9日期间的在线零售的所有交易。该公司主要销售独特的各种场合礼品。这家公司的许多客户都是批发商。本文将通过pyspark对数据进行导入与预处理&…

思迈特受邀参加工信部等权威机构行业盛会,探讨AI领域前沿技术

近日,思迈特软件作为国产BI领域知名厂商,多次受邀出席行业盛会,与众多业内专家学者、行业精英及知名企业代表等汇聚一堂共襄盛会,探讨行业前沿热点研究及最新趋势,分享企业数字化建设创新成果与成功实践,共…

Spring高手之路19——Spring AOP注解指南

文章目录 1. 背景2. 基于AspectJ注解来实现AOP3. XML实现和注解实现AOP的代码对比4. AOP通知讲解5. AOP时序图 1. 背景 在现代软件开发中,面向切面编程(AOP)是一种强大的编程范式,允许开发者跨越应用程序的多个部分定义横切关注点…

深度解析:重庆耶非凡科技有限公司的人力rpo项目

在当今竞争激烈的商业环境中,人力资源项目的成功与否往往决定了一个企业的长远发展。重庆耶非凡科技有限公司作为行业内的佼佼者,其人力资源项目备受瞩目。本文将深入探讨该公司的人力资源项目,特别是其独特的选品师项目和人力RPO服务。 首先…

【做一道算一道】无重叠区间

无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 示例 1: 输入: intervals [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有…

2024年06月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2024年06月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

安装、测试和训练OpenPCDet:一篇详尽的指南

简介 OpenPCDet是一个用于3D目标检测的开源工具箱,它提供了多种数据集的加载器,支持多种模型,并且易于扩展。在本博客中,我将引导你完成OpenPCDet的安装过程,并展示如何测试和训练预训练模型。 安装OpenPCDet 环境要…

数字光强测量仪OPT3001

外观 参考价格 原理图 频谱 特性 说明 OPT3001 传感器用于测量可见光的密度。传感器的光 谱响应与人眼的视觉响应紧密匹配,其中具有很高的红 外线阻隔。 OPT3001 是一款可如人眼般测量光强的单芯片照度 计。OPT3001 器件兼具精密的频谱响应和较强的 IR 阻隔功能&a…

基于Weaviate构建多模态检索和多模态检索增强(RAG): Building Multimodal Search and RAG

Building Multimodal Search and RAG 本文是学习 https://www.deeplearning.ai/short-courses/building-multimodal-search-and-rag/ 这门课的学习笔记。 What you’ll learn in this course Learn how to build multimodal search and RAG systems. RAG systems enhance an …

JVM垃圾回收器的选择

在java中,垃圾回收(gc)是重要的过程,用于管理内存,回收不被使用的对象,垃圾回收主要针对的是内存结构中的堆内存进行回收,内存结构和回收算法请参考java内存结构及垃圾回收算法介绍 垃圾回收器的…

在iPhone上恢复已删除的Safari历史记录的最佳方法

您是否正在寻找恢复 iPhone 上已删除的 Safari 历史记录的最佳方法?好吧,这篇文章提供了 4 种在有/无备份的情况下恢复 iPhone 上已删除的 Safari 历史记录的最佳方法。现在按照分步指南进行操作。 iPhone 上的 Safari 历史记录会被永久删除吗&#xff1…

kafka 发送文件二进制流及使用header发送附属信息

文章目录 背景案例发送方接收方 背景 需要使用kafka发送文件二进制以及附属信息 案例 发送方 import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord;import java.io.InputStream; import java.nio.charset.S…

Halo DB 魔法之 pg_pcpu_limit

↑ 关注「少安事务所」公众号,欢迎⭐收藏,不错过精彩内容~ 前情回顾 前面已经介绍了“光环”数据库的基本情况和安装办法,今天来介绍一个新话题。 哈喽,国产数据库!Halo DB! 三步走,Halo DB 安装指引 ★ Ha…

Java Agent利器

一、JavaAgent技术 1.1 什么是JavaAgent JavaAgent是一种特殊的Java程序,是Instrumentation的客户端。它与普通Java程序通过main方法启动不同,JavaAgent并不是一个可以单独启动的程序,它必须依附在一个Java应用程序(JVM&#xf…

java并发常见问题

1.死锁:当两个或多个线程无限期地等待对方释放锁时发生死锁。为了避免这种情况,你应该尽量减少锁定资源的时间,按顺序获取锁,并使用定时锁尝试。 2.竞态条件:当程序的行为依赖于线程的执行顺序或输入数据到达的顺序时…

Lagrange ZK Coprocessor:革新区块链领域的大数据应用

1. 引言 2024年5月11日,Lagrange Labs宣称获得由Founders Fund领投(Archetype Ventures, 1kx, Maven11, Fenbushi Capital, Volt Capital, CMT Digital, Mantle Ecosystem Fund和其它天使投资人跟头)的1320万美金种子轮融资,致力于…

springboot高校网上选课系统-计算机毕业设计源码85583

摘 要 本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述高校网上选课系统的当前背景以及系统开发的目…

typescript --object对象类型

ts中的object const obj new Object()Object 这里的Object是Object类型,而不是JavaScript内置的Object构造函数。 这里的Object是一种类型,而Object()构造函数表示一个值。 Object()构造函数的ts代码 interface ObjectConstructor{readonly prototyp…

实验报告6-SSM框架整合

资料下载链接 实验报告6-SSM框架整合(1验证码) 实验报告6-SSM框架整合(2管理员登录) 实验报告6-SSM框架整合(3商品的分页查询) 实验报告6-SSM框架整合(4权限拦截器) 一、需求分析 使用普通整合方式实现SSM(SpringMVC、Spring和MyBatis)整合,…

C++20 范围(Range):简化集合操作

C20 范围:简化集合操作 一、范围(Range)的目的二、在模板函数中使用范围概念三、投影四、视图五、结论 一、范围(Range)的目的 在 C20 中,范围概念要求一个对象同时拥有迭代器和结束哨兵。这在标准集合的上…