C++
文章平均质量分 60
胡胡浩特
这个作者很懒,什么都没留下…
展开
-
C++类型转换函数(类型转换运算符函数)
用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。**C++提供类型转换函数(type conversion function)来解决这个问题。类型转换函数的作用是将一个类的对象转换成另一类型的数据。**如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数:operator double( ){return real;}函数返回double型变量real转载 2021-08-20 18:03:58 · 3086 阅读 · 1 评论 -
C++枚举类型enum与enum class的使用方法是什么
一.关于枚举类型什么是枚举类型?答:如果一个变量只有几种可能的值,那么就可以定义为枚举类型,比如:性别只有男和女,那么就可以将性别定义为一种枚举类型,其中男和女就是性别所包含的变量。所谓”枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。在C++中,枚举类型分为不限定作用域(enum)和限定作用域(enum class)。enum与enum class的区别?(为什么需要限定作用域?)答:枚举作用域是指枚举类型成员名字的作用域,起自其声明之处,终止枚举定义结束之处。enu转载 2021-08-20 16:38:28 · 5425 阅读 · 0 评论 -
C语言字节对齐问题详解
引言考虑下面的结构体定义:typedef struct{ char c1; short s; char c2; int i;}T_FOO;假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。现在,我们编写一个简单的程序:复制代码int main(void){ T_FOO a; printf("c1 -> %d, s -> %d, c2 -> %d,转载 2020-09-17 16:22:28 · 957 阅读 · 0 评论 -
C++默认初始化和值初始化、 直接初始化和拷贝初始化
默认初始化和值初始化一一对应前提知识声明: 在环境/上下文中指定一个变量的名字。也就是说,声明仅仅是让编译器知道,而没有实际分配空间。初始化:给一个声明后尚未初始化的变量一个有意义的初始值。赋值 : 销毁一个变量原来的值,并赋予一个新值。相当于改变了一个变量的状态。默认初始化:对象可能产生未定义的值(是否绝对尚待确定,例如类类型(定义了默认构造函数)的默认初始化是否属于值初始化等)。值初始化:对象的值是确定(预设)的。值初始化出现场景:1.数组初始化时初始值数量小于维度,剩下的元素会进行原创 2020-05-22 22:17:47 · 1443 阅读 · 0 评论 -
c++创建对象带括号和不带括号的区别
class Test{public: Test() {} Test(int a) {}}1、栈上创建对象1.1 无括号Test a; // 调用默认构造函数,栈上分配内存创建对象1.2 有括号Test a(); // 无任何意义,声明一个返回值为Test,参数为空,名字叫做a的函数1.3 有括号+参数Test a(2); // 调用构造函数Test(int a),栈上分配内存创建对象2、堆上创建对象2.1 无括号Test *a = new Test; // 调用默认转载 2020-05-22 22:03:53 · 573 阅读 · 0 评论 -
C++顶层const和底层const
顶层const表示对象本身是一个常量底层const表示不能通过指针或引用改变所指向的对象例如const int a = 42; //顶层const,不能改变a的值,int只能有顶层const//--------------------------指针------------------------------int b = 12;const int* b1 = &b; //底层...原创 2020-05-02 01:35:52 · 238 阅读 · 0 评论 -
c++实现最大堆和最小堆
原文地址添加链接描述本文加了一点点补充堆是具有以下特性的完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,叫做最大堆;每个结点的值都小于或等于其左右孩子结点的值,叫做最小堆。一、建堆vector<int> nums = {9, 6, 2, 4, 7, 0, 1, 8, 3, 5};1、如果使用nums构建最大堆:make_heap(nums.begin(), nu...转载 2020-03-12 02:44:55 · 2247 阅读 · 1 评论 -
C++string的substr操作需要注意的地方
s.substr(pos,n)返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符。需要注意的是pos不能越界,pos+n可以越界。如果开始位置pos超过了string的大小,则substr函数会抛出一个out_of_range异常。如果开始位置pos加上计数值n大于string的大小,则substr...原创 2020-03-11 22:40:33 · 1485 阅读 · 0 评论 -
C++实现均值滤波器和中值滤波器
C++实现均值滤波器和中值滤波器数字图像处理课作业,代码实现均值滤波器和中值滤波器由于中值滤波器是非线性滤波,不是卷积,所以均值和中值滤波分开实现。这里只给出代码,opencv版本为3.4.5my_convolution.h#ifndef MY_CONVOLUTION#define MY_CONVOLUTION#include <opencv2/opencv.hpp>...原创 2019-05-28 21:55:11 · 2230 阅读 · 0 评论 -
Canny算子c++实现
数字图像处理作业,实现一个canny算子,这里只给出代码,opencv版本为3.4.5#include <iostream>#include "opencv2/opencv.hpp"using namespace std;using namespace cv;/*生成高斯卷积核 kernel*/void Gaussian_kernel(int kernel_size...原创 2019-05-28 22:05:58 · 1513 阅读 · 1 评论 -
分水岭算法及其实现
1 - 算法描述1.1 分水岭算法的原理 分水岭的概念是以三维方式来形象化一幅图像为基础的:两个空间坐标再加上强度。在这种“地形学”解释中,考虑三种类型的点:(a)局部最小值点,该点对应一个盆地的最低点,当我们在盆地里滴一滴水的时候,由于重力作用,水最终会汇聚到该点。注意:可能存在一个最小值面,该平面内的都是最小值点。(b)盆地的其它位置点,该位置滴的水滴会汇聚到局部最小点。(c)盆地的边缘...原创 2019-08-13 19:04:17 · 7856 阅读 · 0 评论 -
矩阵伪逆的opencv实现
1、矩阵的逆定义:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。可逆条件:A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当 时,A称为奇异矩阵)性质:-矩阵A可逆的充要条件是A的行列式不等于0。-可逆矩阵一定是方阵。-如果矩阵A是可逆的,A的逆矩阵是唯一的。-可逆矩阵也被称为非奇...原创 2019-12-06 09:57:01 · 993 阅读 · 0 评论