c++--类型的基础
1.常量对象,常量成员函数
(1).常量对象
常量对象的引用和指针不能调用类的普通的成员函数。只能调用常量成员函数。
(2).常量成员函数:把const放在类成员函数参数列表后。表示隐含的this是一个指向常量的指针
(3).当创建一个const对象时,直到构造函数完成初始化过程,对象才取得其常量属性。
2.友元
(1).类可以允许其他类或函数访问它的非公有成员,方法是令其他类或函数成为它的友元。
(2).友元:在类内为对应函数(成员函数或非成员函数)或类加上一个friend开头的声明。
(3).把一个A类的成员函数FunA声明为令一个类B的友元时,需要组织下定义和声明顺序。
a.定义A。
b.定义B,声明A::FunA为其友元。
c.定义A:FunA。
3.内联函数
类内部定义函数的默认为内联的
类外部定义函数时,加上inline修饰使其内联。
内联是否有效取决于编译器判断。
4.可变数据成员
mutable 类型 变量名;然后可以在const成员函数里访问和修改此数据成员。
5.类内初始值
class x
{
private:int a = 0;vector<int> b{0};
};
6.类声明
类在声明后定义前这段区间属于不完全类型。此时只能,定义指向此类型的指针或引用;声明以其为形参或返回类型的函数。
类内部不能有类自己的成员声明。指向类自己的指针或引用可以。
class A;// ok
A* p = nullptr;// ok
A& pp = *p;// ok
A fun(A a);// okclass A
{
private:A m_ppp;// errA* m_p;// okA& m_pp;// okint m_i;
};int main()
{return 0;
}
7.类的定义分两步处理:
(1).编译成员的声明。
(2).直到类全部可见才编译函数体,意味着函数体内可以使用类中任何成员。
成员函数的返回类型或参数列表中名字,须使用前可见。
意味着成员函数的返回类型,形参类型必须在类定义中:
a.前面部分。
b.外层作用域内已经被声明。
class A
{
public:B fun();// errvoid fun(B);// errvoid fun(){B* p = nullptr;// ok}class B;B fun2();// okvoid fun2(B);// ok
};int main()
{
}
8.构造函数
(1).对const,引用或某种未提供默认构造函数的类类型的类内成员,则必须通过构造函数初始值列表为这些成员提供初值。
随着构造函数体一执行,初始化就完成了。构造函数体内不属于初始化过程。
(2).类成员初始化顺序和他们在类定义中出现顺序一致。(构造函数初始值列表无法影响初始化顺序)。
(3).默认初始化:
块作用域内定义不含初始值的非静态变量或数组;类类型成员中没在构造函数初始值列表中初始化的。
(4).值初始化:
数组初始化时,初始值数量少于数组大小时,后续数组元素;定义局部静态变量无初始值;显式请求值初始化T()。
(5).默认初始化,值初始化效果
对基本数值类型,默认初始化后,值大小为未知。值初始化后,为0。
对类类型,默认初始化,值初始化均指向默认构造函数。
如果构造函数只接受一个形参,则它实际上定义了通过形参类型自动转化为此类类型的隐式转换机制。
在构造函数声明前加explicit可以阻止此隐式转换发生。定义处不用加explicit。
9.聚合类
(1).条件:
所有成员都是public
没定义任何构造函数
没类内初始值
没基类,没virtual函数
(2).针对这种类型可以成员初始值列表初始化。
10.类的静态成员
(1).特性
类的静态成员存在于任何此类型实例对象之外。
类的静态成员函数不包含this指针。
(2).访问
可通过类对象,引用或指针或作用域运算符来访问静态成员。
成员函数内,可直接访问。
(3).初始化
在类外部初始化静态成员时,不能重复static。
静态数据成员,不是在构造函数中初始化的。必须在类外部定义和初始化每个静态成员。
(4).不同于普通成员处:
静态数据成员可以是不完全类型,类的非静态成员则不可。
可以用静态成员做默认实参,类的非静态成员则不可。
#include <iostream>
class A
{
public:A(){}public:static A m_a;// ok
};A A::m_a;
void fun(A a = A::m_a)// ok
{}int main()
{return 0;
}
相关文章:
c++--类型的基础
1.常量对象,常量成员函数 (1).常量对象 常量对象的引用和指针不能调用类的普通的成员函数。只能调用常量成员函数。 (2).常量成员函数:把const放在类成员函数参数列表后。表示隐含的this是一个指向常量的指针 (3).当创建一个const对象时,直到…...
Python with提前退出:坑与解决方案
Python with提前退出:坑与解决方案 问题的起源 早些时候使用with实现了一版全局进程锁,希望实现以下效果: Python with提前退出:坑与解决方案 全局进程锁本身不用多说,大部分都依靠外部的缓存来实现的,r…...
Vue3-provide和inject
作用和场景:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信 跨层传递普通数据: 1.顶层组件通过provide函数提供数据 2.底层组件通过inject函数获取数据 既可以传递普通数据,也可以使用ref传递响应式数据(…...
Python与设计模式--适配器模式
23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...
大模型能否生成搜索引擎的未来?
文|郝 鑫 编|刘雨琦 ChatGPT火爆之前,水面下,也有中国公司也在朝着智能助手的方向努力。夸克便是其中之一。在GPT风靡科技圈后,国内就开始陆续冒出一些大模型厂商。对当时夸克而言,做大模型毋庸置疑&am…...
鸿蒙开发-ArkTS 语言-状态管理
[写在前面: 文章多处用到gif动图,如未自动播放,请点击图片] 衔接上一篇:鸿蒙开发-ArkTS 语言-基础语法 3. 状态管理 变量必须被装饰器装饰才能成为状态变量,状态变量的改变才能导致 UI 界面重新渲染 概念描述状态变量被状态装饰器装饰的变…...
一篇文章带你掌握MongoDB
文章目录 1. 前言2. MongoDB简介3. MongoDB与关系型数据库的对比4. MongoDB的安装5. Compass的使用6. MongoDB的常用语句7. 总结 1. 前言 本文旨在帮助大家快速了解MongoDB,快速了解和掌握MongoDB的干货内容. 2. MongoDB简介 MongoDB是一种NoSQL数据库,采用了文档…...
删除docker镜像
随着我们拉取的镜像越来越多,镜像的管理越来越难。这时候可能就需要删除镜像了。 本关的任务是学习如何删除容器,要求学习者参照示例,将busybox:latest镜像删除。 相关知识 删除镜像 如果要删除本地的镜像,可以使用 docker rm…...
力扣 --- 删除有序数组中的重复项 II
题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...
Opencv图像处理(全)
文章目录 博主精品专栏导航备注:以下源码均可运行,不同项目涉及的函数均有详细分析说明。11、图像项目实战(一)银行卡号识别 —— sort_contours()、resize()(二)文档扫描OCR识别 —— cv2.getPerspectiveT…...
Flutter桌面应用开发之毛玻璃效果
目录 效果实现方案依赖库支持平台实现步骤注意事项话题扩展 毛玻璃效果:毛玻璃效果是一种模糊化的视觉效果,常用于图像处理和界面设计中。它可以通过在图像或界面元素上应用高斯模糊来实现。使用毛玻璃效果可以增加图像或界面元素的柔和感,同…...
基于C#实现优先队列
一、堆结构 1.1性质 堆是一种很松散的序结构树,只保存了父节点和孩子节点的大小关系,并不规定左右孩子的大小,不像排序树那样严格,又因为堆是一种完全二叉树,设节点为 i,则 i/2 是 i 的父节点,2i 是 i 的…...
ssm+vue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。
演示视频: ssmvue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三…...
什么是木马
木马 1. 定义2. 木马的特征3. 木马攻击流程4. 常见木马类型5. 如何防御木马 1. 定义 木马一名来源于古希腊特洛伊战争中著名的“木马计”,指可以非法控制计算机,或在他人计算机中从事秘密活动的恶意软件。 木马通过伪装成正常软件被下载到用户主机&…...
Pinia仓库统一管理
pinia独立维护 在src/stores文件夹下创建index.js文件,将main.js中关于pinia的语句放到index.js中 index.js文件内容: import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstate const pinia createPi…...
[论文阅读]VoxSet——Voxel Set Transformer
VoxSet Voxel Set Transformer: A Set-to-Set Approach to 3D Object Detection from Point Clouds 论文网址:VoxSet 论文代码:VoxSet 简读论文 这篇论文提出了一个称为Voxel Set Transformer(VoxSeT)的3D目标检测模型,主要有以下几个亮点: 提出了基于…...
【开源】基于Vue.js的医院门诊预约挂号系统的设计和实现
项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…...
1、Mysql架构与历史
Mysql逻辑架构 最上层是服务并不是Mysql所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构,比如连接处理,授权认证,安全等。 第二层是Mysql比较有意思的部分。大多数Mysql的核心服务都在这一层,…...
考试复习
选择20道 填空10道 判断10道 简答4-5道 编程题2道 一、选择题 1.js中更改一个input框的值: <input ida type"text" value"123456"> 通过a.value改变他的值 方法: 在script标签中通过id获得该输入框对象,然…...
使用Docker一键安装MySQL与Nginx脚本
在项目开发和部署过程中,使用Docker可以方便地快速搭建和管理数据库(MySQL)以及Web服务器(Nginx)。本教程将为你提供一份一键安装脚本。 安装Docker 首先,确保你的系统已经安装了Docker。如果没有安装&am…...
DLSS Swapper终极指南:免费开源的DLSS文件智能管理工具
DLSS Swapper终极指南:免费开源的DLSS文件智能管理工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经遇到过这样的困扰:你心爱的游戏明明支持DLSS技术,但游戏自带的DLSS…...
鲸震恩!DeepSeek V4 价格永久“打骨折”,网友疯狂“表白”:梁圣的恩情还不完
①2026 年 5 月 22 日 20:36,DeepSeek 官宣,deepseek-v4-pro 模型 API 价格将于北京时间 2026/05/31 23:59 结束 2.5 折优惠活动后,正式调整为原定价的 1/4。也就是说,从 6 月 1 日起当前 2.5 折直接变成常态价了。在上次…...
IGND算法:融合高斯牛顿法与增量学习的优化新范式
1. IGND算法:当高斯牛顿法遇见增量学习在机器学习的世界里,模型训练的本质就是一场持续的优化之旅。我们手握一个由参数构成的复杂函数,目标是在浩瀚的参数空间中,找到那个能让预测误差最小化的“甜蜜点”。多年来,随机…...
用Python和Folium玩转上海电信数据集:手把手教你绘制用户移动轨迹地图
用Python和Folium玩转上海电信数据集:手把手教你绘制用户移动轨迹地图当你面对一个包含数百万条电信记录的数据集时,如何从中提取有价值的用户移动轨迹信息?本文将带你从零开始,使用Python和Folium库,将原始的电信基站…...
MySQL报错注入实战:从错误信息读取到文件写入
1. 这不是“SQL注入教程”,而是一次真实渗透测试中的边界突破实践很多人看到“基于报错的SQL注入”第一反应是:老掉牙的技术,现在还有用?我去年在给一家本地政务系统做授权渗透时,就遇到了一个看似完全无感的登录接口—…...
告别Cygwin!用Windows版MRT一键批量拼接MODIS影像(附详细配置流程)
告别Cygwin!Windows版MRT全流程实战:MODIS影像批量拼接指南 遥感数据处理的门槛正在被技术进步不断拉低。曾几何时,在Windows系统下处理MODIS数据意味着必须忍受Cygwin这类Linux模拟环境的笨重与兼容性问题——环境配置复杂、命令操作反直觉、…...
Linux Hook技术演进史:从函数指针到eBPF,安全与监控的十年变迁
Linux Hook技术演进史:从函数指针到eBPF的十年变革在系统级编程领域,Hook技术始终扮演着关键角色。想象一下这样的场景:当某个关键系统调用被触发时,你需要在不修改原始代码的情况下注入自定义逻辑——可能是记录日志、实施安全检…...
量子态编码:从指数级瓶颈到线性复杂度的高效实现
1. 量子态编码:从理论瓶颈到工程实践在量子计算领域,尤其是量子机器学习和量子优化算法中,我们常常面临一个看似基础却至关重要的挑战:如何将经典数据高效地“加载”到量子态中?这个过程被称为量子态编码或数据加载。对…...
DPmoire:为莫尔超晶格定制高精度机器学习力场的自动化方案
1. 项目概述:当莫尔物理遇上机器学习力场 在凝聚态物理和计算材料科学的前沿,莫尔(Moir)超晶格系统正以其丰富而奇特的物理现象吸引着全球研究者的目光。通过简单地扭转两层二维材料(如石墨烯或过渡金属硫族化合物&…...
8051单片机sbit与extern bit的L1警告解决方案
1. 问题背景与现象分析在8051单片机开发中,我们经常需要直接操作特殊功能寄存器(SFR)的位。比如用P1.4引脚作为片选信号线时,通常会这样定义:sbit CS P1^4;但当这个定义放在主程序文件,而其他模块文件通过…...
