当前位置: 首页 > news >正文

【C++ 基础】构造和析构

构造和析构

1.养成一个习惯,只要是变量,定义后要初始化

2.在C++当中要完成对象的初始化工作,可以借助构造来完成,如果要完成对象的清理操作,借助析构来完成

3.在C++里面对于对象的初始化有4种方式:

1、直接赋值(结构的直接赋值),类中数据成员全是公有,且没有声明任何的构造函数。不建议大家用
2、公有的初始化函数.(习惯写成公有的赋值函数)
3、构造函数C++规定在类的说明中可以包含一个或者多个特殊的公有函数成员--构造函数构造函数的特性:1)、函数名和类名相同2)、无函数返回值类型3)、一个新的对象被建立时,该对象隶属的类的构造函数自动被调用(不能手动调用),完成初始化4)、上一条中新对象的建立包括两种情况:一种是对象说明语句,一种是new运算符创建动态无名对象5)、如果类中没有给出显式的构造函数,系统会自动给一个什么都不干的隐式的构造函数 cnpc(){}6)、如果类说明中包含多个构造,一般它们会有不同的参数列表,在同一个对象中只能调用一个构造

4、成员初始化列表

	在一些的特殊情况下数据成员只能用成员初始化列表,不能用构造(类的数据成员为常量)特性:1)、成员初始化列表必须依托于构造函数,在构造函数的定义参数列表后面加:然后加成员数据名(值)2)、构造函数能够完成的数据的初始化的工作,成员初始化列表都能完成,反之,不能

5.析构

专门用来在对象生存周期结束时做善后工作,如果类中有动态内存,必须在析构前(析构函数中)进行动态内存释放特点:1)、析构函数名一律为~类名();2)、析构函数没有函数返回值3)、析构函数没有参数4)、一个类只有一个析构函数,也可以缺省,如果不写默认提供一个隐式的什么都不干的析构5)、在对象的生存期结束,用delete运算符释放动态对象的时候,系统自动调用析构(旧版本不能手动调用,新版本可以

#代码

	struct MyStu{int id;char * pName;};class CMySTU{int id;char *pName;public:CMySTU();~CMySTU();};CMySTU::CMySTU(){id = 0;pName = NULL;//pName = new char[128];}CMySTU::~CMySTU(){if (pName)delete pName;}class CNpc{int hp;int mp;public:~CNpc(){int i = 0;}CNpc() :hp(1), mp(3){hp = 0;mp = 0;}CNpc(int hp, int m) :hp(hp), mp(m){//this->hp = hp;//mp = m;int i = 0;}void InitNpc(int h, int m);//{//	hp = h;//	mp = m;//}void setNpc(int h, int m){hp = h;mp = m;}CNpc getNpc(){hp = 100;mp = 30;return *this;}void a(){}};void CNpc::InitNpc(int h, int m){}class CA{int a;public:CA();~CA();CA(int a);void SetA(int a);int GetA() { return a; }};CA::~CA(){}CA::CA(int a) :a(1){this->a = a;}CA::CA(){}void CA::SetA(int a){this->a = a;}struct myPoint{int x, y;};#include <string.h>int _tmain(int argc, _TCHAR* argv[]){CNpc b;b.~CNpc();CNpc *pn = new CNpc;pn->~CNpc();delete pn;pn = NULL;//{//	CNpc n;//	int i = 0;//}//int m = 0;//myPoint mp;//MyStu *pMs;//pMs = new MyStu;//pMs->id = 12;//pMs->pName = new char[128];//strcpy(pMs->pName, "zhang san");//delete[]pMs->pName;//delete pMs;//pMs = NULL;//CNpc n;//对象说明语句(定义一个对象)//CNpc *pn;//pn = new CNpc;//new运算符创建一个无名对象//CNpc n1(2, 3);//对象说明自动调用带参构造//CNpc *pn1 = new CNpc(1, 2);//创建动态对象调用带参构造//delete pn1;//delete pn;//pn = NULL;//int i = 0;//int j(1);//CNpc n;//对象建立//CNpc *pn = new CNpc;//一个堆区的无名对象建立//n.InitNpc(10, 20);//myPoint pos = {0};//结构变量的初始化//int i1;//i1 = 12;//int i = 0;//delete pn;return 0;}

相关文章:

【C++ 基础】构造和析构

构造和析构 1.养成一个习惯&#xff0c;只要是变量&#xff0c;定义后要初始化 2.在C当中要完成对象的初始化工作&#xff0c;可以借助构造来完成&#xff0c;如果要完成对象的清理操作&#xff0c;借助析构来完成 3.在C里面对于对象的初始化有4种方式&#xff1a; 1、直接…...

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的&#xff0c;我会在天天酷跑的下篇添加源代码&#xff0c;这里会讲述天天酷跑这个项目是如何实现的每一个思路&#xff0c;都是作者自己学习于别人的代码而创作的项目和思路&#xff0c;这个代码和网上有些许不一样&#xff0c;因为掺杂了…...

Python读取Excel批量写入到PPT生成词卡

一、问题的提出 有网友想把Excel表中的三列数据&#xff0c;分别是&#xff1a;单词、音标和释义分别写入到PPT当中&#xff0c;每一张PPT写一个单词的内容。这种批量操作是python的强项&#xff0c;尤其是在办公领域&#xff0c;它能较好地解放双手&#xff0c;读取Excel表后…...

NS3学习——tcpVegas算法代码详解(1)

目录 一、源码 二、详解 1.定义日志和命名空间 2.注册Typeld类:TcpVegas和GetTypeId方法的实现 3.构造函数和析构函数 4.TcpVegas类中成员函数 (1) Fork函数 (2) PktsAcked函数 (3) EnableVegas函数 (4) DisableVegas函数 一、源码 /* -*- Mode:C; c-file-style:&qu…...

相机雷达外参标定综述“Automatic targetless LiDAR–camera calibration: a survey“

相机雷达外参标定综述--Automatic targetless LiDAR–camera calibration: a survey 前言1 Introduction2 Background3 Automatic targetless LiDAR–camera calibration3.1 Information theory based method(信息论方法)3.1.1 Pairs of point cloud and image attributes(属性…...

【Java基础-27】Java中的访问修饰符:分类、作用及应用场景

在Java编程中&#xff0c;访问修饰符&#xff08;Access Modifiers&#xff09;是控制类、方法、变量和构造函数访问权限的关键工具。通过合理使用访问修饰符&#xff0c;可以有效地封装代码&#xff0c;保护数据&#xff0c;并确保代码的安全性和可维护性。本文将详细介绍Java…...

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中&#xff0c;限流的场景是很多的&#xff0c;尤其是要提供接口给外部使用的时候&#xff0c;但是自己去封装的话&#xff0c;相对比较耗时。 本方式可以使用默认&#xff08;方法&#xff09;&#xff0c;ip、自定义参数进行限流&#xff0c;根据时间…...

SAP从入门到放弃系列之委外分包(Subcontracting)-Part1

以前写过一篇委外相关的文章&#xff0c;没有很详细的写。只是一个概念的概述ERP实施-委外业务-委外采购业务 最近看PA教材&#xff0c;遇到了这块内容&#xff0c;就再详细的整理一下SAP关于委外的理论知识。 文章目录 概述分包和物料需求计划 (MRP)委外分包订单分包委外业务…...

nlp新词发现——浅析 TF·IDF

传统nlp任务处理文本及其依赖已有的词表&#xff0c;只有在词表里出现的词才能被识别并加以处理。但这也带来了一些问题&#xff1a; 假设没有词表&#xff0c;如何从文本中发现新词&#xff1f; 随着时间推移&#xff0c;新词会不断出现&#xff0c;固有词表会过时&#xff0…...

WebGL2示例项目常见问题解决方案

WebGL2示例项目常见问题解决方案 webgl2examples Rendering algorithms implemented in raw WebGL 2. [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/webgl2examples 项目基础介绍 WebGL2示例项目&#xff08;https://github.com/tsherif/webgl2examples.gi…...

鸿蒙元服务从0到上架【第三篇】(第二招有捷径)

第一招&#xff1a;开始发布元服务 AppGallery 上传通过IDE生成的图标&#xff0c;后面按照步骤填写 后台有隐私政策链接生成处&#xff0c;前往填写生成 第二招&#xff1a;用户协议 对于没有服务器或者是需要极速开发的开发者&#xff0c;可通过gitee生成用户协议&…...

Jimureport h2命令执行分析记录

首先找testConnection接口&#xff0c;前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找&#xff0c;接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型&#xff0c;也就是如上图的dbSource&#xff0c;根据打印的结果可以知道这里是local cac…...

vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题

资料&#xff1a; 史上最详细的webrtc-streamer访问摄像机视频流教程-CSDN博客 webrtc目录 前端集成 html文件夹里的webrtcstreamer.js&#xff0c;集成到前端&#xff0c;可以访问webrtc&#xff0c;转换rtsp为webrtc视频流&#xff0c;在前端video中播放 <videoref&quo…...

进网许可认证、交换路由设备检测项目更新25年1月起

实施时间 2025年1月1日起实施 涉及设备范围 核心路由器、边缘路由器、以太网交换机、三层交换机、宽带网络接入服务器&#xff08;BNAS&#xff09; 新增检测依据 GBT41266-2022网络关键设备安全检测方法交换机设备 GBT41267-2022网络关键设备安全技术要求交换机设备 GB/…...

Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法

问题描述 如下图所示&#xff0c;对于 java 项目某些依赖&#xff0c;IDEA 提示&#xff0c;引用了含有漏洞的依赖。如果是单个依赖&#xff0c;可以考虑直接升级版本即可。但是对于传递性依赖&#xff0c;比如 flink 项目中&#xff0c;依赖的部分模块&#xff0c;它们自己依…...

WebAuthn 项目常见问题解决方案

WebAuthn 项目常见问题解决方案 webauthn Webauthn / passkeys helper library to make your life easier. Client side, server side and demo included. [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/webaut/webauthn 项目基础介绍 WebAuthn 项目是一个开源…...

LeetCode 844. 比较含退格的字符串 (C++实现)

1. 题目描述 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s …...

Python8-写一些小作业

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础8-灵活运用顺序、选择、循环结构 写一些小练习题目1、给一个半径&#xff0c;求圆的面积和周长&#xff0c;…...

C++ STL vector基本原理和用法

文章目录 基本原理1. 数据存储结构2. 内存管理机制3. 迭代器实现原理4. 元素访问原理5. 插入和删除元素原理 常见用法1. 概述2. 包含头文件3. 定义和初始化4. 常用成员函数5. 迭代器6. 内存管理与性能特点7. 应用场景 基本原理 以下是关于 std::vector 的基本原理讲解&#xf…...

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…...

SDD基于规范编程-OpenSpec及SuperPowers沙

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式&#xff0c;即所谓的“工程导向型”开发&#xff0c;要求开发者创建一个复杂的项目结构&#xff0c;包括项目文件&#xff08;.csproj&#xff09;、解决方案文件&#xff08;.sln&#xff09;、属性设置以及依赖…...

CD44(分化簇44)靶点机制与抗体药物研发:从信号通路到临床转化

在细胞生物学与免疫治疗领域&#xff0c;CD44&#xff08;分化簇44&#xff09; 作为细胞黏附分子家族的核心成员&#xff0c;始终是科研关注的焦点。作为一种广泛表达于细胞表面的单跨膜糖蛋白&#xff0c;CD44不仅在细胞与细胞外基质的相互作用中扮演关键角色&#xff0c;更通…...

FPGA新手必看:用Vivado在EGo1开发板上点亮七段数码管(附完整代码与约束文件)

FPGA实战&#xff1a;从零实现EGo1开发板的七段数码管驱动 第一次接触FPGA开发的朋友&#xff0c;往往会被硬件描述语言和开发工具链的复杂性吓退。但当你真正在开发板上点亮第一个LED或数码管时&#xff0c;那种成就感是无与伦比的。本文将带你用Vivado工具链&#xff0c;在EG…...

绝对能解决IntelliJ IDEA 控制台中文乱码问题!!!

绝对能解决IntelliJ IDEA 控制台中文乱码问题&#xff01;&#xff01;&#xff01; 1 idea 控制台中文乱码idea 运行代码&#xff0c;控制台的中文却是乱码&#xff0c;相信这个是所有 Javaer 都会遇到的问题&#xff0c;但是很惭愧&#xff0c;我工作 7 年才彻底解决这个问题…...

PHP 8.9扩展模块安全配置失效了吗?3类高危漏洞正在 silently hijack 你的生产环境

第一章&#xff1a;PHP 8.9扩展模块安全加固配置概览PHP 8.9&#xff08;当前为前瞻预发布版本&#xff0c;基于PHP 8.3持续演进的实验性分支&#xff09;在扩展模块层面引入了更严格的加载策略与运行时权限控制机制。安全加固的核心目标是&#xff1a;最小化默认启用扩展、强制…...

[具身智能-286]:YOLO 的姿态估计

YOLO 的姿态估计&#xff08;Pose Estimation&#xff09;功能&#xff0c;已经从早期的“附加功能”演变为如今高度集成的核心能力。它不仅继承了 YOLO 系列“快”的基因&#xff0c;更在精度和架构上经历了数次颠覆性的进化。简单来说&#xff0c;YOLO 的姿态估计不再只是“画…...

AOSP 14 Launcher3 桌面改造:三步搞定谷歌搜索栏移除,附完整代码与避坑点

AOSP 14 Launcher3深度定制&#xff1a;彻底移除谷歌搜索栏的工程实践 当国内开发者拿到AOSP 14源码时&#xff0c;Launcher3默认集成的谷歌搜索栏往往成为首个需要处理的"不和谐元素"。这个占据首屏显著位置的组件不仅功能受限&#xff0c;更可能影响整体UI协调性。…...

股票数据接口对比:A股、B股、港股哪个更适合你的需求?

股票数据接口深度解析&#xff1a;如何根据投资策略选择A股、B股与港股数据源 当你在凌晨三点盯着屏幕上的K线图&#xff0c;突然发现一个关键指标缺失导致策略失效时&#xff0c;那种挫败感足以让任何投资者彻夜难眠。选择正确的股票数据接口&#xff0c;就像为你的投资引擎选…...

4大核心价值解锁旧Mac潜能:OpenCore Legacy Patcher全方位升级指南

4大核心价值解锁旧Mac潜能&#xff1a;OpenCore Legacy Patcher全方位升级指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款…...

Claude Code命令完全指南:从基础到高级的50+实用指令

Claude Code命令完全指南&#xff1a;从基础到高级的50实用指令 【免费下载链接】claude-code-guide Claude Code Guide - Setup, Commands, workflows, agents, skills & tips-n-tricks go from beginner to power user! 项目地址: https://gitcode.com/gh_mirrors/cla/…...