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>右键项目,属性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

vue中使用svg图像

一 、svg图像是什么 SVG&#xff08;可缩放矢量图形&#xff09;是一种图像格式&#xff0c;它以XML文档的形式存在&#xff0c;用以描述图像中的形状、线条、文本和颜色等元素。由于其基于矢量的特性&#xff0c;SVG图像在放大或改变尺寸时能够保持图形质量不受影响。这种格式…

服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程

服务器的远程桌面无法连接&#xff0c;服务器远程桌面无法连接问题处理教程。 一、问题概述 服务器远程桌面无法连接是日常运维中常见的问题之一。它可能由多种原因造成&#xff0c;如网络问题、服务器配置错误、远程桌面服务未启动等。本教程将指导您逐步排查并解决这些问题。…

电源滤波器怎么选用

电源滤波器怎么选用 滤波器应用场景及作用第一步&#xff1a;第二步&#xff1a;第三步&#xff1a;第四步&#xff1a; 滤波器应用场景及作用 可以有效解决EMC测试无法通过、端口防护、滤除干扰、设备保护等问题 主要功能有: 1、降低主电源谐波; 2、保护驱动装置电力电子元件…

python找出100~999之间的水仙花数字

水仙花数字&#xff1a;个位&#xff0c;十位&#xff0c;百位的立方之和等于这个数本身 例如&#xff1a;153 1^35^33^3 for i in range(100, 1000):bw i // 100sw i % 100 // 10gw i % 10if bw ** 3 sw ** 3 gw ** 3 i:print(i)

Kubernetes——Pod控制器

目录 一、Pod控制器 1.定义 2.Pod与控制器的关系 3.作用 4.Pod控制器的类型组成及特点 4.1Pod控制器的类型 4.1.1ReplicaSet 4.1.2Deployment 4.1.3DaemonSet 4.1.4StateSet 4.1.5Job 4.1.6CronJob 4.2Pod与控制器的关系 二、Kubernetes中的服务发现 1.服务发现的…

内网渗透-在HTTP协议层面绕过WAF

进入正题&#xff0c;随着安全意思增强&#xff0c;各企业对自己的网站也更加注重安全性。但很多web应用因为老旧&#xff0c;或贪图方便想以最小代价保证应用安全&#xff0c;就只仅仅给服务器安装waf。 本次从协议层面绕过waf实验用sql注入演示&#xff0c;但不限于实际应用…

Ps:调整画笔工具

调整画笔工具 Adjustment Brush Tool可以将选区、创建蒙版和应用调整的传统工作流程合并为一个步骤&#xff0c;简化了对图像进行非破坏性局部调整的操作。 快捷键&#xff1a;B 调整画笔工具是 Photoshop 2024 年 5 月版&#xff08;25.9 版&#xff09;新增的工具。 ◆ ◆ …

【CTF Web】BUUCTF BUU LFI COURSE 1 Writeup(代码审计+PHP+文件包含漏洞)

BUU LFI COURSE 1 1 点击启动靶机。 解法 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/7/9* Time: 7:07 AM*/highlight_file(__FILE__);if(isset($_GET[file])) {$str $_GET[file];include $_GET[file]; }如果GET请求中接收到file参数&#xff0c;就会…

AJAX基础知识

定义 Ajax 异步 JavaScript 和 XML &#xff08; async javascript and xml &#xff09;&#xff0c;使用 Ajax 技术网页应用能够快速地将数据更新呈现在用户界面上&#xff0c;而不需要重载&#xff08;刷新&#xff09;整个页面&#xff0c;这使得程序能够更快地回应用户的操…

年薪百万也难达财务自由?揭秘背后的真相!

谈及财务自由&#xff0c;人们往往会好奇&#xff1a;究竟需要多少资金才能跨越这道门槛&#xff1f;根据《胡润财富自由门槛》的调研&#xff0c;中国一线城市的财富自由标准从入门级的人民币1900万元到中级6500万到高级别的1.9亿元不等。然而&#xff0c;财务自由的核心并非仅…

SpringBoot打war包并配置外部Tomcat运行

简介 由于其他原因&#xff0c;我们需要使用SpringBoot打成war包放在外部的Tomcat中运行,本文就以一个案例来说明从SpringBoot打war包到Tomcat配置并运行的全流程经过 环境 SpringBoot 2.6.15 Tomcat 8.5.100 JDK 1.8.0_281 Windows 正文 一、SpringBoot配置打war包 第一步&a…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践

一、简介 Sentinel 作为一款强大的流量控制组件&#xff0c;能够对系统入口流量进行精准控制&#xff0c;有效防止服务因突发流量冲击引起服务雪崩&#xff0c;进而导致服务瘫痪&#xff0c;确保服务的稳定性和可靠性。 Nacos 作为配置管理和服务发现平台&#xff0c;实现了配置…

打印机的ip不同且连不上

打印机的ip不同且连不上 1.问题分析2.修改网段3.验证网络 1.问题分析 主要是打印机的网段和电脑不在同一个网段 2.修改网段 3.验证网络

LeetCode 两两交换链表中的节点

原题链接24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff0c;请看图片的过程模拟&#xff0c;这里添加了一个哨兵节点0&#xff0c;目的是为了方便操作&#xff0c;得到指向1节点的指针。 class Solution {public:ListNode* swapPairs(ListNod…

LeetCode 算法:三数之和c++

原题链接&#x1f517;&#xff1a; 难度&#xff1a;中等⭐️⭐️ 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不…

【JavaEE 进阶(二)】Spring MVC(下)

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多进阶知识 目录 1.前言2.响应2.1返回静态界面2.2返回数据2.3返回HTML代码 3.综合练习3.1计算器3.2用户登…

HarmonyOS Next开发----k线图滑动惯性

K线图的惯性滑动&#xff0c;由于官方提供的Scroller没有设置初始位置的方法&#xff0c;不知道后面会不会支持。由于项目急着上线&#xff0c;所以只有采用另一种方案&#xff0c;滑动结束后模拟计算惯性滑动。 思路&#xff1a; 手指滑动结束后&#xff0c;k线惯性滑动轨迹…

冒泡排序与快速排序

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 关注博主带你了解更多数据结构知识 1.冒泡排序 冒泡排序 private static void swap(int[] arrary,int i,int j){int tmp arrary[i];arrary[i] arrary[j];arrary[j] tmp;public static void bubbl…

STM32作业实现(七)OLED显示数据

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…