自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hundreays

MachineLearning/ComputerVision

  • 博客(194)
  • 收藏
  • 关注

原创 OSError: Could not find kaggle.json. Make sure it‘s located in /Users/peco/.kaggle

使用kaggle api下载数据集时报错:Traceback (most recent call last): File "/Users/peco/anaconda3/bin/kaggle", line 5, in <module> from kaggle.cli import main File "/Users/peco/anaconda3/lib/python3.9/site-packages/kaggle/__init__.py", line 23, in <mod

2022-04-19 20:23:20 1853 3

原创 图像分割任务数据集处理

图像分割任务数据集处理1.分割任务的输入输出1.1 模型的输入输出shape1.2 数据集中的标签图像处理2.Pytroch Dataloader与Dataset3.图像分割任务常用数据增强1.分割任务的输入输出1.1 模型的输入输出shape对于分类任务来说,模型的输入通常是BCHW的,其中:B是batch_szie;C是输入图像的通道数,一般为3;H就是图像的高;W是图像的宽。而输出一般就是一个维度为类别数量的分布向量,其中每一个元素为这个张图片属于对应类别的概率。而对于分割任务

2022-02-08 10:44:52 6252 1

原创 开发环境配置:服务器训练模型工具tmux基础使用

服务器训练模型工具tmux基础使用1.tumx可以做什么2.Ubuntu安装tmux3.常用命令3.1 新建会话并进入3.2 退出会话3.4 重新进入会话3.5 销毁会话1.tumx可以做什么在ubuntu服务器上的做实验跑模型的时候,一般都是通过ssh进行远程连接。模型训练过程往往需要比较长的时间,但是网络有时候不稳定,可能在半夜会出现终端会话连接断开的情况,这样这个终端里所执行的程序也就中断,tmux刚好可以解决这个问题,当我们在tmux中工作的时候,即使关掉ssh连接窗口,再次连接服务器然后进入t

2022-02-05 11:21:42 1922

原创 Pytorch自定义层或者模型类

Pytorch自定义层或者模型类1.nn.Module2.自定义层ConvBNReLU3.nn.Module与nn.Functional4.nn.Sequential5.自定义模型类LeNet1.nn.Modulenn.Module是PyTorch提供的神经网络类,该类中实现了网络各层的定义及前向计算与反向传播机制。在实际使用时,如果想要实现某种神经网络模型,只需自定义模型类的时候继承nn.Module,然后:在自定义类的构造函数__init__()中定义模型结构与参数;在函数forward()中

2022-02-05 10:26:19 1946

原创 开发环境配置:Windows下Vscode SFTP代码同步到服务器端

开发环境配置:Windows下Vscode SFTP代码同步到服务器端1.下载SFTP插件2.配置插件3.同步文件到服务器在实际做实验的时候,代码往往是在自己的电脑上完成的,然后放到服务器上去训练,这就需要完成两个终端的代码同步。来实现一下将Windows下test_sftp/目录下的代码同步到服务器code/目录下。1.下载SFTP插件首先下载安装SFTP插件:2.配置插件然后用vscode打开test_ftp文件夹,按ctrl+shift+p,在面板上输入SFTP:config,这样就会

2022-01-29 18:11:59 2117

原创 应用于图像识别的深度残差网络:ResNet

应用于图像识别的深度残差网络:ResNet1.论文背景2.论文工作2.1 BN层2.2 残差块2.3 34层ResNet网络结构1.论文背景《Deep Residual Learning for Image Recognition》ResNet是微软MSRA何凯明团队在2015年ImageNet上使用的网络,在当年的classification、detection、localization比赛中,ResNet均获了第一名的好成绩。2.论文工作作者首先提出了在加深网络深度进行训练时发现的问题:只是进行

2021-06-12 19:44:42 875 2

原创 应用于大规模图像识别的深层卷积神经网络:VGG

VGG网络1.论文背景2.论文工作3.网络搭建1.论文背景VGG论文背景:VGG网络 《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》是ILSVRC2014图像分类比赛中第二名的网络,由英国牛津大学的Visual Geometry Group组提出。2.论文工作VGG数据预处理:各通道减去RGB在训练集上的均值。VGG网络结构:主要看VGG16(下图D)和VGG19(下图E):VGG完成的工作:试验了小

2021-06-12 19:39:47 436

原创 Could not find GLEW

解决方法:sudo apt install libgl1-mesa-dev

2021-04-13 14:04:26 865

原创 开发环境配置:Windows下Pytorch安装记录

Windows下Pytorch安装记录1.安装CUDA和cudnn2.安装Pytorch3.测试这里记录一下Windows下Pytorch安装过程,一些必要的软件或者工具版本以及下载链接为:CUDA10.2:https://developer.nvidia.com/cuda-10.2-download-archivecudnn:https://developer.nvidia.com/zh-cn/cudnnPytorch官网:https://pytorch.org/1.安装CUDA和cudnn

2021-04-01 16:40:10 601 1

原创 操作系统与main函数、argc、argv

操作系统与main函数、argc、argv1.操作系统究竟是什么2.操作系统的调用通道:系统调用2.1 C库函数和系统调用API的关系2.2不同平台下库函数的差异3.操作系统的重大意义:软件体系分工4.main函数返回值返回给谁4.1 函数为什么需要返回值4.2 main函数被谁调用4.3 Linux下一个新程序执行的本质4.4 实践获取main的返回值5.argc、argv与main函数的传参5.1 谁给main函数传参5.2 为什么需要给main函数传参5.3 代码层面给main传参的实现5.4 本质上

2021-03-11 09:03:41 1218 1

原创 C语言变量作用域、链接属性与static关键字

C语言变量作用域与static关键字##局部变量的代码块作用域(1)代码块基本可以理解为一对大括号{}括起来的部分。(2)代码块不等于函数,因为if while for都有{}。所以代码块<=函数(3)局部变量的作用域是代码块作用域,也就是说一个局部变量可以被访问和使用的范围仅限于定义这个局部变量的代码块中定义式之后的部分。4.7.5.2、函数名和全局变量的文件作用域(1)文件作用域的意思就是全局的访问权限,也就是说整个.c文件中都可以访问这些东西。这就是平时所说的局部和全局,全局就是文

2021-03-10 12:19:50 736

原创 C语言变量存储类及相关关键字

C语言内存管理二:变量存储类)1.程序中内存从哪里来11.程序中内存从哪里来14.5.1.1、程序执行需要内存支持()对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行时需要内存来存储一些临时变量。4.5.1.2、内存管理最终是由操作系统完成的(1)内存本身在物理上是一个硬件器件,由硬件系统提供。(2)内存是由操作系统统一管理。为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某种方式

2021-03-10 11:10:34 834 1

原创 C语言内存管理深入

C语言变量的存储类型1.程序执行需要内存支持2.三种内存来源2.1 栈内存的特点2.2 堆内存详解变量的存储类型就是指存储变量值的内存类型,变量的存储类型决定变量何时创建,何时销毁以及它的值保持多久。1.程序执行需要内存支持对程序来说,内存就是程序的立足之地,程序是被放在内存中运行的,程序运行时需要内存来存储一些临时变量。内存管理最终是由操作系统完成的,内存本身在物理上是一个硬件器件,由硬件系统提供。内存是由操作系统统一管理。为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。这

2021-03-09 07:26:58 1717 2

原创 C语言内存管理基础

C语言内存管理基础1.什么是内存2.程序运行为什么需要内存2.计算机中如何管理内存4.一些描述内存大小的单位5.内存管理之栈stack6.内存管理之堆heap7.malloc()和free()函数的使用8.复杂数据结构1.什么是内存从硬件角度看:内存实际上是电脑的一个配件,一般叫内存条。根据不同的硬件实现原理还可以把内存分成SRAM和DRAM。从逻辑角度看:内存是这样一种东西,它可以随机访问,只要给一个地址,就可以访问这个内存地址;并且可以读写,当然了逻辑上也可以限制其为只读或者只写。内存在编程中天然

2021-03-08 10:27:02 317

原创 C++sort函数使用总结

Leetcoe刷题:数组篇1.两数之和2.寻找两个正序数组的中位数1.两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。题目链接:https://leetcode-cn.com/problems/two-sum/解法分析:最简单的解法就是两层循环遍历。一个好一些的解法是,定义一个map,依次遍历数组中的元素,则

2021-03-07 20:52:50 189

原创 C语言指针的理解六:函数指针与typedef

C语言中指针的理解5:函数指针与C语言实现面向对象1.函数指针与typedef1.1 函数指针的实质(还是指针变量)1.2 函数指针的语法和分析方法1.3 typedef关键字的用法1.4 总结2.函数指针的应用2.1 用函数指针调用执行函数2.2 结构体内嵌函数指针实现分层3.再论typedef1.函数指针与typedef1.1 函数指针的实质(还是指针变量)函数指针的实质还是指针,还是指针变量。在64位系统中,所有的指针都是8字节,32位系统中都是4字节。函数指针、数组指针、普通指针之间并没有本质

2021-03-07 19:59:49 2377

原创 图像形态学处理操作:膨胀和腐蚀

二值图像分析:图像形态学处理

2021-03-07 19:58:55 2519

原创 二值图像分析:霍夫直线检测

二值图像分析:霍夫直线检测1.霍夫变换空间1.1 霍夫变换的基本原理1.2 坐标空间下一条直线->参数空间中的一点1.3 坐标空间下一点->参数空间中的一条直线1.4 霍夫直线检测1.霍夫变换空间1.1 霍夫变换的基本原理图像霍夫(Hough)变换是一种特别有用的图像变换,它的基本思想是将图像的2D平面坐标空间 x-y 变换到参数空间 p-q,经过变换后原来在平面坐标空间难以提取的几何特征信息,比如直线和圆等在参数空间内可以很容易的提取出来。图像中的直线与圆检测就是典型的利用霍夫空间特性实

2021-03-06 15:58:41 1006

原创 C语言函数的深入探究

C语言函数的深入探究1.为什么会有函数2.函数的实质:数据处理器3.函数的使用规则3.1 函数的基本使用3.2 函数原型和作用3.3 函数传参4.递归函数4.1 什么是递归函数4.2 函数的递归调用原理4.3 使用递归函数的原则:收敛性、栈溢出1.为什么会有函数一个程序可以分成多个源文件,一个源文件内部通常包含多个函数,一个函数分成多个语句,这就是整个程序的组织形式。这样组织的好处在于:分化问题、便于编写程序和便于分工。函数的出现是人:程序员和架构师的需要,而不是机器:编译器、CPU的需要。函数的目的

2021-03-05 19:50:55 227

原创 二值图像分析:轮廓形状逼近与拟合

二值图像分析:轮廓逼近1.二值图像轮廓逼近1.1 轮廓逼近函数1.2 轮廓逼近算法原理分析2.代码实践1.二值图像轮廓逼近1.1 轮廓逼近函数在[二值图像分析:二值图像轮廓提取],通过findContours()函数可以找到二值图像中的轮廓信息。对图像二值图像的每个轮廓,OpenCV提供了一个函数approxPolyDP()来对每个轮廓逼近它的的真实几何形状,从而通过轮廓逼近的输出结果判断一个对象是什么形状,或者得到一些其他信息。OpenCV轮廓逼近的函数原型如下:void cv::approxP

2021-03-05 09:15:51 5548 2

原创 二值图像分析:按面积过滤噪点案例分析

二值图像分析:按面积过滤噪点案例分析1.通过轮廓提取2.通过连通区域1.通过轮廓提取在实际应用中,有时候需要按照噪点的面积来过滤掉一些噪声块,有一种解决办法是,通过轮廓提取来得到每个轮廓的面积,然后根据面积填充这些轮廓:double start = static_cast<double>(getTickCount());//轮廓提取vector<vector<Point>> contours;vector<Vec4i>hierarchy;find

2021-03-04 10:31:08 1064 1

原创 C语言预处理与宏定义以及内联函数

C语言预处理与宏定义1.C语言预处理理论1.1 由源码到可执行程序的过程1.2 预处理的意义1.3 编程中常见的预处理2.C语言预处理代码实践2.1 #include头文件包含2.2 注释2.3 条件编译3.宏定义的使用3.1 宏定义的规则和使用解析3.2 宏定义示例3.3 带参宏和带参函数的区别4.内联函数和inline关键字1.C语言预处理理论1.1 由源码到可执行程序的过程当写了一个test.c文件,对它进行编译似乎是直接生成了可执行文件a.out:peco@ubuntuz:/mnt/hgfs

2021-03-03 12:58:22 500

原创 C语言指针的理解五:二重指针与二维数组

C语言中指针的理解5:二重指针与二维数组1.二重指针1.1 二重指针与普通一重指针的区别1.2 二重指针的用法1.3 一些概念的实质2.二维数组2.1 二维数组的内存映像2.2 二维数组下标理解和访问2.3 二维数组的应用和更多维数组2.4二维数组的运算和指针1.二重指针1.1 二重指针与普通一重指针的区别本质上来说,二重指针和一重指针的本质都是指针变量,占用相同的内存空间,而指针变量的本质就是变量。二重指针本质上也是指针变量,和普通指针的差别就是它指向的变量类型必须是个一重指针。二重指针其实也是一

2021-03-03 12:55:43 1932 1

原创 二值图像分析:二值图像轮廓提取

二值图像分析:二值图像轮廓提取与分析OpenCV的轮廓发现API获取二值图像的轮廓拓扑信息,轮廓发现API如下:void cv::findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() )其中image表示输入图像,它必须是二值图像,二值图像可以由threshold、Can

2021-03-02 15:54:14 6587 1

原创 C语言指针的理解四:指针与强制数据类型转换

C语言中指针的理解4:指针与强制数据类型转换1.变量的数据类型的含义2.指针的数据类型的含义1.变量的数据类型的含义首先来看这样一道2016年的408考试真题:有代码:short si=-32767; unsigned short usi=si;,则usi的值为?解析:short占4字节,16bit,si是有符号数,对应的二进制补码为1000 0000 0000 0001,而usi是无符号数,因此对于之前的补码,解析方式为直接将其当作原码解析即可,1000 0000 0000 0001为二进制原

2021-03-01 17:00:55 2028

原创 C语言指针的理解三:指针与函数传参

C语言中指针的理解3:指针与函数传参1.函数传参时不同类型参数的表现1.1 普通变量作为函数形参1.2 数组作为函数形参1.3 指针作为函数形参1.4 结构体变量作为函数形参2.传值调用与传址调用3.输入型参数与输出型参数3.1 函数为什么需要形参与返回值3.2 函数传参中使用const指针3.3 函数如何向外部返回多个值3.4 总结1.函数传参时不同类型参数的表现1.1 普通变量作为函数形参函数传参时,普通变量作为参数,形参和实参名字可以相同也可以不同。在子函数内部,形参的值等于实参,原因是函数调用

2021-03-01 16:08:05 2466

原创 C语言指针的理解二:指针与数组、数组指针与指针数组

C语言中指针的理解2:const与指针的合用1.const修饰指针的4种形式2.const修饰的变量真的不能改吗?3.const究竟应该怎么用1.const修饰指针的4种形式const关键字在C语言中用来修饰变量,表示这个变量是常量。指针变量也是变量,所以const关键字自然也可以用来修饰指针。const修饰指针常见的有4种形式,区分清楚这4种即可全部理解const和指针。以int类型指针为例:第一种:const int *p;,表示p本身不是const,*p是const。第二种:int con

2021-03-01 14:37:36 1088

原创 C语言指针的理解一:指针是什么

C语言中指针的理解1:指针是什么1.C语言中的指针是什么1.1 指针变量和普通变量的区别1.2 为什么需要指针1.3 指针使用的标准方式2.指针带来的一些符号的理解2.1 星号*2.2 取地址符&2.3 指针定义并初始化与指针定义然后赋值的语法区别2.4 左值与右值3.野指针问题3.1 什么是野指针3.2 如何避免野指针3.3 NULL是什么1.C语言中的指针是什么1.1 指针变量和普通变量的区别首先必须非常明确:指针完整的名字应该叫指针变量,简称为指针。指针的实质就是个变量,从内存和数据的角

2021-03-01 10:59:52 1458 1

原创 二值图像分析:连通组件寻找算法

二值图像分析:连通组件寻找算法1.连通组件标记算法介绍2.OpenCV中的API1.连通组件标记算法介绍连接组件标记算法(connected component labeling algorithm)是图像分析中最常用的算法之一,算法的实质是扫描二值图像的每个像素点,对于像素值相同的而且相互连通分为相同的组(group),最终得到图像中所有的像素连通组件。扫描的方式可以是从上到下,从左到右。对于一幅有N个像素的图像来说,最大连通组件个数为N/2。扫描是基于每个像素单位的,OpenCV中进行连通组件扫描调

2021-02-24 18:12:08 1818

原创 二值图像分析:OpenCV中的二值化阈值操作

二值图像分析:OpenCV中的二值化阈值操作1.二值图像的定义2.OpenCV中的基本阈值操作3.OTSU二值寻找算法3.TRIANGLE二值寻找算法4.自适应二值化阈值算法1.二值图像的定义二值图像就是图像中灰度值只有2个的图像,一般就是黑白图像,2个灰度值分别为0(表示黑色)和255(表示白色)。二值图像处理与分析在机器视觉与机器人视觉中非常重要,涉及到非常多的图像处理相关的知识。常见的二值图像分析包括轮廓分析、对象测量、轮廓匹配与识别、形态学处理与分割、各种形状检测与拟合、投影与逻辑操作、轮廓特

2021-02-20 17:27:27 3798 1

原创 C++内存管理:内存管理基础、new和malloc、智能指针引入

C++内存管理:内存管理基础、new和malloc、智能指针引入1.为什么要研究内存管理1.1 程序就是数据加算法1.2 计算机中如何管理内存1.3 总结2.C++可用内存区域2.1 C语言可用内存区域2.2 C++新增内存区域2.3 总结3.new和malloc的区别3.1 简单区别3.2 深度区别3.3 总结4.智能指针引入4.1 指针的优势和劣势4.2 如何解决4.3 智能指针如何实现4.4 智能指针总结5.Java的垃圾回收机制5.1 Java语言整体框架5.2 Java的垃圾回收机制5.3 垃圾回

2021-02-09 16:51:59 545 1

原创 C++学习笔记:数据类型相关typeid、cast、自动类型推导

C++学习笔记:数据类型相关typeid、cast1.typeid2.C++中的4中cast2.1 静态转换static_cast2.2 重新解释转换reintepret_cast2.3 const_cast2.4 动态转换dynamic_cast3.C++的自动类型推导3.1 auto关键字3.2 decltype关键字3.3 auto和decltype的对比C++是强类型语言,里面的每一个变量和表达式都有自己的类型。有了类型编译器就可以帮助进行类型检查,有错误就会报出来。1.typeidtypei

2021-02-08 10:03:33 604 1

原创 C++面向对象:友元函数和友元类

C++学习笔记:友元函数和友元类1.友元函数1.1 外部函数访问类内成员1.2 友元函数的引入1.3 友元函数总结2.友元函数的另一种实现3.友元类3.1 友元类的概念和使用3.2 互为友元类3.3 友元类总结4.为什么会有友元函数4.1 使用友元函数的优缺点4.2 使用友元函数的两种情况4.3 运算符重载中使用友元回顾4.4 两个类如何共享数据4.5 友元函数和类的成员函数的区别4.6 共有友元函数1.友元函数1.1 外部函数访问类内成员class person{public: string

2021-01-31 11:26:47 430

原创 C++面向对象:静态成员和静态类

C++学习笔记:静态成员和静态类1.类的静态成员1.1 static关键字1.2 什么是静态成员1.3 静态成员的特征和实践验证2.静态成员的深度理解2.1静态数据成员的使用2.2 静态成员和普通成员的互相调用规则2.3 从内存角度来看静态成员3.静态成员的用途3.1 用途举例3.2 静态成员与面向对象4.静态类的概念4.1 什么是静态类4.2 静态类的优势4.3 C++不支持静态类1.类的静态成员1.1 static关键字static关键字在C语言中有2种用法:static修饰局部变量和全局变量,这

2021-01-29 19:49:46 7135 1

原创 C++学习笔记:运算符重载

C++学习笔记:运算符重载1.运算符重载引入1.1 从函数重载说起1.2 什么是运算符重载1.3 运算符重载示例2.深度理解运算符重载2.1 运算符重载的本质2.2 运算符重载的意义1.运算符重载引入1.1 从函数重载说起函数重载是在一定作用域内,多个相同名称但不同参数列表的函数重载。编译时由编译器根据实际调用时给的实参情况来判定本次实际用哪个函数,这个过程叫重载决策。重载函数本质上就是多个独立函数,重载机制在编译时发生,运行时不参与。函数重载的意义就是避免我们给函数胡乱起名,方便编写类库覆盖所有可

2021-01-29 12:44:58 424

原创 C++面向对象的多态特性:多态和虚函数

C++学习笔记:多态和虚函数1.什么是多态2.虚函数3.多态中的override4.纯虚函数与抽象类4.1 纯虚函数4.2 抽象类(abstract type)4.3 接口(interface)5.虚析构函数5.1 什么是虚析构函数5.2 为什么需要虚析构函数1.什么是多态案例:父类animal,2个子类dog和cat,实现run()方法。class animal{public: void run(void) { cout<<"animal run()."<<e

2021-01-28 19:39:02 303 1

原创 C++面向对象的继承特性:多继承二义性问题、虚继承

C++学习笔记:多继承及其二义性问题1.多继承2.多继承的二义性问题情况13.多继承的二义性问题情况24.多继承的二义性问题情况总结5.虚继承解决菱形继承的二义性问题5.1 虚继承怎么用5.2 虚继承的实现原理1.多继承多继承就是一个子类有多个父类。在继承中,子类会继承父类的成员变量和成员函数:class A {public: int a; void print(void){cout<<"a = "<<this->a<<endl;}};cl

2021-01-28 18:24:39 674

原创 C++面向对象的继承特性:父类和子类的类型兼容规则

C++学习笔记:子类和父类的类型兼容规则1.何为类型兼容规则2.类型兼容规则的常见情况3.总结1.何为类型兼容规则类型兼容规则是父类和子类在数据类型方面的兼容规则。C和C++都是强类型语言,任何变量和对象、指针、引用等都有它自己的类型,编译器根据类型来确定很多事的。除了类型要匹配,还需要兼容。比如int和short、char就是兼容的,它们对内存里二进制数据的解读方式是一样的,而int和float,尽管它们都是占4个字节,但是它们对于内存中二进制数据的解读方式是完全不一样的,所以它们完全不兼容。派生类

2021-01-26 20:15:19 758

原创 C++面向对象的继承特性:派生类和基类的同名成员问题

C++学习笔记:派生类和基类的同名成员问题1.派生类中再实现一个基类中的方法会怎样2.派生类中如何访问被隐藏的基类方法3.注意和总结1.派生类中再实现一个基类中的方法会怎样派生类和基类中各自实现一个内容不同但函数原型完全相同的方法会怎么样?代码实验:#include<iostream>using namespace std;class person{public: string name; int age; void info(void) { cout<&

2021-01-26 19:39:40 584 2

原创 C++面向对象的继承特性:派生类和基类的构造析构关系

C++学习笔记:派生类和基类的构造析构关系1.派生类和基类的构造析构关系2.为什么派生类的构造(析构)必须调用基类的某个构造(析构)3.其他几个细节1.派生类和基类的构造析构关系派生类并不继承基类的构造和析构函数,只继承成员变量和普通成员方法。不继承意思是派生类中确实不包含基类的构造和析构函数,派生类自己有自己的构造和析构,规则和之前讲过的完全一样。研究构造和析构函数时,一定要注意默认规则。派生类的构造函数一定会调用基类的某一个构造函数,析构也一样。派生类的任意构造函数可以显式指定调用基类的任意一个构

2021-01-26 16:04:49 2012

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除