【C++】初始化列表,explicit 关键字,静态成员

news2024/12/25 9:32:14

初始化列表

构造函数内可以对于成员的赋值,故不能称为是初始化,初始化只能初始化依次,C++中类对象的初始化可由初始化列表完成

  • 内置类型成员可以通过设置缺省值实现初始化,但对于const修饰的成员引用成员没有默认构造函数的自定义类型成员,必须借助初始化列表来初始化
  • 初始化列表为空或不显示时,对于自定义类型仍然会执行,会去调用其构造函数,即对于自定义类型成员变量,一定会先使用初始化列表初始化
  • 初始化列表中成员初始化的次序由成员声明的顺序决定,与初始列表中的顺序无关
  • 建议成员都在初始化列表进行初始化
  • 拷贝构造也有初始化列表

explicit 关键字

关于隐式类型转换

在这里插入图片描述
构造函数前加上 explicit 可禁止构造函数的隐式类型转换
C++11 扩展支持多参数的隐式类型转换,同样可用 explicit 禁止

静态成员

关于静态成员的引入背景

涉及一个类,统计计算机程序创建类对象的个数

  • 全局变量可以解决,但是不符合C++封装理念
  • 故引入静态成员变量
  • 静态成员变量不属于某个对象,为所有对象共有,属于整个类
  • 静态成员单独在全局进行定义初始化,可通过对象访问

静态函数的引用

  • 静态成员可通过对象的成员函数访问
  • 为解决访问时对象所在域内未定义类对象的问题
  • 引入静态成员函数,用 static 修饰成员函数
  • 静态成员函数没有隐含的 this 指针参数
  • 可直接通过类名访问静态成员函数

匿名对象

A() // 匿名对象的生命周期是其所在的一行

  • 常用来调用类
  • 函数返回对象时,也可以使用匿名对象

友元

友元提供了一种突破封装的方式,但是破环了耦合,不宜多用

  • 对于<<运算符重载这种需自定义参数、不需要this的函数、且需要访问类成员的函数,可以用friend修饰为友元函数解决
  • 友元类是单向的

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

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

相关文章

hive解析json

目录 一、背景 二、hive 解析 json 数据函数 1、get_json_object 2、json_tuple 3、使用嵌套子查询(exploderegexp_replacesplitjson_tuple)解析json数组 4、使用 lateral view 解析json数组 一、背景 我们进行ETL(Extract-Transfer-Load) 过程中,经常会遇到从不同数据…

编码拓展:链接库

一.认识链接库 1.1库 计算机中&#xff0c;有些文件专门用于存储可以重复使用的代码块&#xff0c;例如功能实用的函数或者类&#xff0c;我们通常将它们称为库文件&#xff0c;简称“库”&#xff08;Library&#xff09;。 以 C 语言为例&#xff0c;如下为大家展示的就是…

JUC高级十-并发加锁原理之AbstractQueuedSynchronizer(AQS)

1. 前置知识 公平锁和非公平锁可重入锁自旋锁LockSupport数据结构之双向链表设计模式之模板设计模式 AQS重要性 JAVA ------>JVM AQS ------>AQS 2. AQS入门级别理论知识 2.1 是什么? 2.1.1 字面意思 Abstract Queued Synchronizer----抽象的队列同步器 源码位置: …

【Microsoft Edge】如何彻底卸载 Edge

文章目录 一、问题描述二、卸载 Edge2.1 卸载正式版 Edge2.2 卸载非正式版 Edge2.2.1 卸载通用的 WebView22.2.2 卸载 Canary 版 Edge2.2.3 卸载其他版本2.3 卸载 Edge Update 2.4 卸载 Edge 的 Appx 额外安装残留2.5 删除日志文件2.6 我就是想全把 Edge 都删了 一、问题描述 …

预测模型的局部评价?

预测模型的局部评价 为什么要进行局部评价&#xff1f; 首先是临床决策曲线分析通常会给预测模型的使用规定一个阈值范围&#xff0c;相应地预测模型的评价也应该局限在这个范围之内才是合理的&#xff1b; 其次&#xff0c;全局性地评价往往不够敏感&#xff0c;即好的模型和坏…

本地搭建属于自己的ChatGPT:基于Python+ChatGLM-6b+Streamlit+QDrant+DuckDuckGo

本地部署chatglm及缓解时效性问题的思路&#xff1a; 模型使用chatglm-6b 4bit&#xff0c;推理使用hugging face&#xff0c;前端应用使用streamlit或者gradio。 微调对显存要求较高&#xff0c;还没试验。可以结合LoRA进行微调。 缓解时效性问题&#xff1a;通过本地数据库…

C语言实现银行家算法

一.银行家算法 1.由来 银行家算法最初是由荷兰计算机科学家艾兹赫尔迪杰斯特拉&#xff08;Edsger W. Dijkstra&#xff09;于1965年提出的。当时他正致力于解决多道程序设计中产生的死锁问题。在多道程序设计中&#xff0c;由于不同进程之间共享有限的系统资源&#xff0c;如…

【JavaEE初阶】多线程(一)认识线程 线程的创建 Thread的用法

摄影分享&#xff01; 文章目录 认识线程&#xff08;Thread&#xff09;概念执行多线程编程创建线程的写法1.继承Thread&#xff0c;重写run2.实现Runnable接口3.使用匿名内部类&#xff0c;继承Thread4.使用匿名内部类&#xff0c;实现Runable5.使用Lambda表达式 Thread用法…

C语言模拟银行排队叫号(链队)

一.队列 队列是一种具有先进先出&#xff08;FIFO&#xff09;特性的线性数据结构&#xff0c;它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾&#xff08;rear&#xff09;&#xff0c;另一端称为队头&#xff08;front&#xff09;。新元素总是插入在队列的队…

怎么把m4a转换成mp3,分享几个方法给大家!

录音文件中经常出现m4a后缀的音频格式&#xff0c;但通常只能在特定的音频播放器中播放。如果你想把m4a转换成mp3&#xff0c;下面是四种简单易行的方法&#xff0c;适用于Windows 10操作系统。 方法一&#xff1a;使用记灵在线工具转换m4a成mp3 工具地址&#xff1a;记灵在线…

elsticsearch入门

查看所有索引&#xff08;表&#xff09; 向索引&#xff08;表&#xff09;中添加数据&#xff1a; 自定义id添加数据&#xff1a; 自定义id添加数据&#xff1a;方式二 查询数据&#xff1a; 查询索引&#xff08;表&#xff09;中全部数据&#xff1a; 全量修改单条数据&…

File类与IO流

1. java.io.File类的使用 1.1 概述 File类及本章下的各种流&#xff0c;都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xff09;File 能新…

【Leetcode -剑指Offer 22.链表中倒数第k个结点 -203.移除链表元素】

Leetcode Leetcode -剑指Offer 22.链表中倒数第k个结点Leetcode -203.移除链表元素 Leetcode -剑指Offer 22.链表中倒数第k个结点 题目&#xff1a;输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表…

数据结构(三)—— 哈希表

文章目录 一、哈希表积累1.1 哈希map1.2 哈希set 二、哈希表基础三、题3.1 242 有效的字母异位词3.2 349 两个数组的交集3.3 202 快乐数3.4 1 两数之和3.5 54 四数相加II 一、哈希表积累 什么时候想到用哈希法&#xff1a;当要需要查询一个元素是否出现过、判断一个元素是否出…

awvs安装批量扫描

文章目录 安装批量扫描 安装 1.2.AWVS下载   该工具可在官方网站下载&#xff0c;但免费下载的是14天试用版本。   官网下载&#xff1a;AWVS   百度云下载&#xff1a;百度云下载https://pan.baidu.com/s/1UO7GzL0CMemJ_TMQnHNOuA?pwdg1bm 提取码&#xff1a;g1bm 批…

浏览器状态同步和路由-前端路由和服务端路由原理

目录 前端路由和History API 浏览文境&#xff08;Browser Context&#xff09; 会话历史&#xff08;Session History&#xff09; History API history.go()切换当前会话&#xff0c;并不改变会话栈 history.back() history.go(-1) & history.forward() history.…

5.4、服务器编程基本框架和两种高效的事件处理模式

5.4、服务器编程基本框架和两种高效的事件处理模式 1.服务器编程基本框架2.两种高效的事件处理模式①Reactor模式②Proactor模式③模拟Proactor模式 1.服务器编程基本框架 模块功能I/O 处理单元处理客户连接&#xff0c;读写网络数据逻辑单元业务进程或线程网络存储单元数据库、…

18.网络爬虫—Scrapy实战演示

网络爬虫—Scrapy实战演示 Scrapy Shell简介进入shell调试网站启动Scrapy Shell 查看目标网站获取网站源代码常用方法调试xpath提取数据Scrapy请求子页面请求及返回处理创建项目创建爬虫 数据解析写入csv文件后记 前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介&…

Java,jdbc,jvm

1、数据删除 物理删除 直接发送delete语句 就是物理删除 这种删除 删除之后不可恢复逻辑删除 本质是更新 0 表示不可用 1 可用状态 update emp set is_active where id ?2、数据更新 1 显示所有数据 2. 点击修改按钮 此时 应该执行的动作-查询该用户信息 目的是将当前用户…

并发编程的那些事

目录 一、并发编程的目的 二、线程和进程2.1 什么是线程2.2 进程2.3 一个普通Java 程序包含哪些线程 三、并发、并行四、线程的六个状态五、wait 和sleep的区别5.1 位于不同的类5.2 关于锁的释放 一、并发编程的目的 并发编程的目的是为了让程序运行得更快&#xff0c;但是&…