c++(七)
c++(七)
- 内联函数
- 内联函数的特点
- 为什么要有内联函数
- 内联函数是如何工作的呢
- 类型转换
- 异常处理
- 智能指针
- 单例模式
- 懒汉模式
- 饿汉模式
- VS中数据库的相关配置
内联函数
修饰类的成员函数,关键字:inline
inline 返回值类型 函数名(参数列表)
{
;
}
内联函数的特点
<1>代码量少 3-5行
<2>频繁调用
<3>逻辑简单
为什么要有内联函数
频繁的调用一个函数时,就需要频繁的出栈、入栈,此时内存的开销就比较大
内联函数是如何工作的呢
<1>普通函数:当函数调用发生时,编译器通常会生成跳转指令,将控制权转移到函数代码所在的地方,执行
完之后又跳转到函数调用的位置
<2>内联函数:直接把调用函数的语句用函数体来代替

注意:
<1>是不是内联由编译器决定
<2>内联函数只是对编译器的建议
类型转换

异常处理
报错(语法错误、逻辑错误);
c++引入了一种异常处理的机制:
先找到可能出现异常的代码块、抛出异常、捕获异常
异常的处理机制:
exception:标准异常的基类
try
{
有可能出现异常的代码块;
throw(抛出异常);//基本数据类型、类类型
}
catch()//捕获异常
{
}
#include <iostream>
using namespace std;
double div(double a, double b)
{if (0 == b){//throw -1;//throw "分母为0";//throw string("分母不能为0");throw exception("分母不能为0");}else{return a / b;}
}
int main()
{double a, b;cin >> a >> b;try{div(a, b);}catch (int e){cout << "异常是:" << e << endl;}catch (const char* e){cout << "异常是:" << e << endl;}catch (string e){cout << "异常是:" << e << endl;}catch (exception e){cout << "异常是:" << e.what() << endl;}return 0;
}
智能指针
解决什么问题:有时候在堆区申请的空间,自己忘记释放了
类模板
<1>自动智能指针:auto_ptr
<2>共享智能指针:shared_ptr
同时多个智能指针操作同一块的堆区空间,当所有的指针生命周期结束的时候,堆区的空间会自动释放
<3>独享智能指针:unique_ptr
同一时刻,智能有一个指针指向堆区的空间,当这个指针生命周期结束的时候,堆区的空间会自动释放
<4>弱型智能指针:
弱型智能指针不能单独使用,只能和共享智能指针配合使用,弱型智能指针生命周期结束的时候并不会影
响堆区空间的释放,只有共享智能指针的生命周期结束的时候,堆区的空间才会被释放
#include <iostream>
using namespace std;
class Demol
{
public:Demol(int* p = nullptr) :p(p){cout << "Demo(int *)" << endl;this->p = new int;*(this->p) = 88;}
~Demol()
{delete p;cout << "~Demol()" << endl;
}
private:int* p;
};
int main()
{//Demol d;//Demol* p = new Demol;Sshared_ptr<Demol> ptr(new Demol);return 0;
}
单例模式
一个类只能创建一个对象
需求:
<1>构造函数只能调用一次 //打开数据库
<2>类内创建对象(静态成员变量)
<3>要访问这个对象(静态成员函数)
类的设计
1、构造函数必须私有化
2、静态的成员:保存唯一的对象
3、静态的成员函数:获取唯一的对象

懒汉模式
哪里需要,就在哪里创建

存在的问题:
在多线程中,多个线程都要获取这个单例对象
解决:线程锁
饿汉模式
不管是否使用,都准备好

存在的问题:
占用资源
建议:一般使用懒汉模式
VS中数据库的相关配置
<1>将这3个文件放到工程路径下

<2>右键项目,属性




相关文章:
c++(七)
c(七) 内联函数内联函数的特点为什么要有内联函数内联函数是如何工作的呢 类型转换异常处理智能指针单例模式懒汉模式饿汉模式 VS中数据库的相关配置 内联函数 修饰类的成员函数,关键字:inline inline 返回值类型 函数名(参数列…...
SQL语言
SQL语言 导航 文章目录 SQL语言导航一、SQL概述SQL 二、数据库定义SQL 数据类型 三、数据操作视图更新 四、SQL的授权五、存储过程六、嵌入式SQL主语言与数据库通信 七、动态SQL 一、SQL概述 SQL 支持三级模式结构 视图->外模式 基本表->模式 存储文件->内模式 二…...
【PPT】修改新建文本框默认字体
【PPT】修改新建文本框默认字体...
智能办公本如何选择
智能办公本如何选择 引言 随着科技的不断发展,智能办公本已成为现代职场人士的重要工具。它们不仅具备传统纸质笔记本的书写体验,还融入了先进的智能技术,让办公变得更加高效便捷。在选择智能办公本时,我们需要关注多个方面&…...
Spark基础:Scala变量与数据类型
在Scala中,变量和数据类型是编程的基础。Scala作为一种强大的静态类型语言,支持多种数据类型,并提供了可变(var)和不可变(val)两种类型的变量声明方式。以下是在Scala中变量和数据类型的基础知识…...
php 实现:给图片加文字水印,图片水印,压缩图片
演示环境: 1、windows10 2、phpstudy 3、php7.4 一、案例演示: 二、素材准备 1、准备一张原始图片 2、准备一张水印图片(透明底图的最好) 3、字体库(windows系统自带的字体库,路径在:C:\Window…...
免费实现网站HTTPS访问
HTTPS(Hypertext Transfer Protocol Secure)是一种基于SSL协议的HTTP安全协议,旨在为客户端(浏览器)与服务器之间的通信提供加密通道,确保数据在传输过程中的保密性、完整性和身份验证。与传统的HTTP相比&a…...
vue3使用vue3-print-nb打印
打印效果 1.下载插件 Vue2.0版本安装方法 npm install vue-print-nb --saveVue3.0版本安装方法: npm install vue3-print-nb --save2.main.js引入 vue2引入 import Print from vue-print-nb Vue.use(Print)vue3引入 import print from vue3-print-nb // 打印…...
R语言ggplot2包绘制网络地图
重要提示:数据和代码获取:请查看主页个人信息!!! 载入R包 rm(listls()) pacman::p_load(tidyverse,assertthat,igraph,purrr,ggraph,ggmap) 网络节点和边数据 nodes <- read.csv(nodes.csv, row.names 1) edges…...
php获取今天凌晨零点的时间
不废话直接上代码 //使用strtotime $midnightToday strtotime("today midnight"); //输出:1716998400 //如果是明天 $midnightToday 86400 //后天 $midnightToday 86400*2//ORM中比对使用 $row ModelVisit::where(uid,$this->uid)->where(visi…...
CATIA进阶操作——创成式曲面设计入门(1)线架设计,三维点、直线、平面、曲线
目录 引出三维空间点生成三维直线三维平面三维曲线总结异形弹簧新建几何体草图编辑,画一条样条线进行扫掠,圆心和半径画出曲面上的螺旋线再次选择扫掠,圆心和半径 其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重…...
thinkphp6中怎么查看ThinkPHP版本号
<?php namespace app\controller; use app\BaseController; use think\app; //这句 class Index extends BaseController { public function test() { echo App::VERSION; //还有这句 } }...
第十二章 创建Web客户端
文章目录 第十二章 创建Web客户端SOAP向导的概述使用SOAP向导 第十二章 创建Web客户端 web客户端是访问web服务的软件。web客户端提供了一组代理方法,每个方法对应于web服务的一个方法。代理方法使用与它所对应的web服务方法相同的签名,并在被请求时调用…...
调试记录-RK平台用指令开启ADB功能
需求 嵌入式Linux系统调试过程中,为了方便,我们会借鉴Android调试的方法,在Linux系统添加adb功能,主要功能是通过USB线连接开发板和PC,实现两者之间传输文件,在PC上执行指令操作开发板。 实现 前提&…...
奇安信_NAC终端安全准入系统(相关问题整理)
奇安信终端安全准入系统 ,下称NAC 一、入网控制方式 1.IP流量控制 2.802.1X 准入 需要NAC、交换机、终端 以802.1X 3.DHCP 准入 将NAC作为DHCP服务器,为客户端分配地址,并对分配地址的客户端进行入网管控。 (*)可选 强制入网…...
在iPhone上恢复已删除的Safari历史记录的最佳方法
您是否正在寻找恢复 iPhone 上已删除的 Safari 历史记录的最佳方法?好吧,这篇文章提供了 4 种在有/无备份的情况下恢复 iPhone 上已删除的 Safari 历史记录的最佳方法。现在按照分步指南进行操作。 iPhone 上的 Safari 历史记录会被永久删除吗࿱…...
【设计模式深度剖析】【7】【结构型】【享元模式】| 以高脚杯重复使用、GUI中的按钮为例说明,并对比Java类库设计加深理解
👈️上一篇:外观模式 | 下一篇:结构型设计模式对比👉️ 设计模式-专栏👈️ 目录 享元模式定义英文原话直译如何理解?字面理解例子:高脚杯的重复使用例子:GUI中的按钮传统方式使用享元模式 4个角色1. …...
OceanBase 内存研究(OceanBase 3.2.4.5)
内存结构 从官网的结构图可以看出,一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存,允许其它租户共享使用该内存资源 (root10.0.0.…...
麒麟系统 安装xrdp 远程桌面方法记录
一、安装环境 麒麟V10 2107 ft2000 麒麟V10 2107 x86_64 二、安装准备 使用《Kylin-Desktop-V10-Release-2107-arm64.iso》镜像 做好U盘启动系统后,需要安装一个远程桌面工具,可以多用户在windows上使用远程桌面访问麒麟系统。 目前在linux系统上较…...
解析Java中1000个常用类:SafeVarargs类,你学会了吗?
在 Java 编程中,泛型和可变参数(varargs)的结合使用可能会导致一些类型安全的问题。为了解决这些问题,Java 提供了 @SafeVarargs 注解。本文将详细介绍 @SafeVarargs 注解的定义、使用方法、应用场景以及其背后的原理,帮助读者深入理解并掌握这一重要特性。 什么是 @Safe…...
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop 老规矩 先放最新地址: Codex 最新官方客户端下载地址 https://codexdown.cn/ 最近在折腾一件很有意思的事情: 不再给 Codex 写“超详细步骤”&…...
告别臃肿软件!OmenSuperHub:惠普暗影精灵的纯净硬件控制神器
告别臃肿软件!OmenSuperHub:惠普暗影精灵的纯净硬件控制神器 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方Omen Gamin…...
RISC-V RT-Thread Smart用户态应用编译与QEMU运行实战指南
1. 项目概述:从内核到应用的完整RISC-V生态体验最近在折腾RT-Thread Smart(简称RTT-Smart)这个微内核实时操作系统,目标平台是qemu模拟的64位RISC-V虚拟机(qemu-virt64-riscv)。整个过程的核心,…...
深入解析Android网络通信框架:OkHttp与Retrofit原理与实践
第一章:引言 移动互联网时代,网络通信是Android应用的核心能力之一。OkHttp与Retrofit作为Android生态中最主流的网络通信框架,已成为开发者必须掌握的技术栈。本章将简要介绍二者在项目中的定位及其技术演进历程。 第二章:OkHttp核心原理剖析 2.1 OkHttp架构设计 OkHtt…...
KMS智能激活工具:3个颠覆性技巧告别Windows和Office激活烦恼
KMS智能激活工具:3个颠覆性技巧告别Windows和Office激活烦恼 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经在准备重要演示时,Office突然弹出"许可证已过…...
OpenClaw与企业微信联动:自动发送工作通知、统计员工回复情况,简化管理流程
OpenClaw 赋能企业微信:构建智能高效的自动化管理新范式在数字化转型浪潮席卷各行各业的当下,企业对于内部流程优化、管理效率提升以及员工协作体验改善的需求日益迫切。传统的管理方式,如手动发送通知、人工统计反馈、层层审批流转等&#x…...
Windows微信QQ防撤回终极指南:RevokeMsgPatcher完整使用教程
Windows微信QQ防撤回终极指南:RevokeMsgPatcher完整使用教程 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitc…...
SNMP 实战:从基础命令到高效监控场景应用
1. SNMP基础:从零开始理解网络监控的核心协议 第一次接触SNMP时,我也被那些数字串和术语搞得一头雾水。简单来说,SNMP就像是你给网络设备安装了一个"话筒",让它能主动汇报自己的状态。这个协议已经存在了30多年…...
3步掌握Seraphine智能助手:你的英雄联盟排位赛专属数据分析解决方案
3步掌握Seraphine智能助手:你的英雄联盟排位赛专属数据分析解决方案 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟排位赛中遇到过这样的困境?BP阶段手忙脚乱&…...
抖音无水印下载终极指南:3分钟搞定批量下载的完整教程
抖音无水印下载终极指南:3分钟搞定批量下载的完整教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...
