自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解

1. 矩阵转置输入一个数字构成的矩形, 将矩形的值进行转置后打印​输入:第一行 正整数n(1

2022-08-31 21:52:41 559 2

原创 C/C++模板类模板与函数模板区别,以及用法详解

第二种是保证其在一个类别中的万能性,比如你想对任意数据类型的数组作交换,但只想写一种函数,就可以用,但相对的会费脑子,在日常打代码一个复制粘贴改改就能写,但需要想的很远,等同于你象棋开局走一步就能达到到将死对面的所有情况你都要想,而且维护方面也是个问题,因此更常用的是第一种,以上还仅是在函数模板的基础上得到的结论,更别说在类模板的函数传入了。cout ...

2022-08-30 20:26:53 821 1

原创 C/C++普通函数与函数模板的区别,调用规则,模板局限性

以上面案例为例,编译器默认调用了普通函数,发现还需要把char转成int,又发现如果调用模板则只需确定类型即可,于是调用模板函数,最优选择。// 注意 如果告诉编译器 普通函数是有的,但只是声明没有实现,或者不在当前文件内实现,就会报错找不到。//具体化,显示具体化的原型和定意思以template开头,并通过名称来指出类型。//使用函数模板时,如果用自动类型推导,不会发生自动类型转换,即隐式类型转换。//1、如果函数模板和普通函数都可以实现,优先调用普通函数。//调用重载的函数模板。...

2022-08-29 18:16:12 369

原创 C++泛型编程,模板(一)函数模板

template//声明一个模板,告诉编译器后面代码紧跟着的代码T不要报错。//错误,模板不能独立使用,即使没有用到T,也必须确定出T的类型。//利用显示指定类型的方式,给T一个类型,才可以使用该模板。// 错误,推导不出一致的T类型。// 正确,可以推导出一致的T。// 1、自动类型推导,必须推导出一致的数据类型T,才可以使用。1、自动类型推导,必须推导出一致的数据类型T,才可以使用。// 2、模板必须要确定出T的数据类型,才可以使用。...

2022-08-28 17:21:08 135

原创 C/CPP基础练习题(二)简单循环(2 + 22 + 222…;斐波那契数列)

1. 求平均年龄01星球有学长若干名, 给出每个学长的年龄, 求01星球学长的平均年龄, 保留小数点后两位输入:第一行: 整数n(1

2022-08-27 17:44:39 1023

原创 C/CPP基础练习题(一)运算符,判断

1. 设计一个程序, 输入三位数a, 分别输出个,十,百位.(0

2022-08-26 11:24:17 422 1

原创 C/C++size(),sizeof(),length(),strlen() 对比分析详解

strcmp()函数首先将s1字符串的第一个字符值减去s2第一个字符,若差值为零则继续比较下去,接着比较第二个字符然后第三个字符等等,若差值不为零,则停止比较并返回两个ASCII码差值。"abc" 结尾默认包含 'a' 'b' 'c' '\0' ,而'a' 'b' 'c',区别是无'\0'。这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,得出结果。...

2022-08-25 19:57:06 833 2

原创 C/CPP中int和string的互相转换详解与多解例题分析

C标准库atoi, atof, atol, atoll(C++11标准) 函数,以及sprintf、sscanf函数,用sstream类,实现C++中int和string的互相转换

2022-08-25 19:47:51 1055

原创 C++文件读写操作分析文本文件与二进制文件

ios::app 与 ios::ate 的区别主要在多线程写文件时有区别,ios::app:第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果是abcde。cout

2022-08-23 20:08:02 307

原创 C++多态案例(三)-电脑组装

cout

2022-08-22 22:56:07 985

原创 C++多态之析构和纯虚析构分析与示例

语法强制纯虚析构函数必须有函数实现,因为有时父类也有一些数据开辟在堆区,既要使用纯虚函数,又要释放父类在堆区中的数据,就需要使用类内纯虚函数声明,类外写实现的写法。由于本案例在一些子类中有些数据开辟到堆区了,所以必须要走子类中的析构代码,如果使用了多态就走不到了,所以需要加上虚析构或者纯虚析构。cout

2022-08-21 22:54:13 219

原创 C++多态纯虚函数和抽象类与多态案例(二)-制作饮品

virtual void func() //子类必须重写父类中的纯虚函数,否则子类无法实例化对象。在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。"

2022-08-20 22:48:55 197

原创 C++多态案例(一)-计算器类

/多态优点:代码组织结构清晰(哪里出问题直接定位),可读性强,利于前期和后期的扩展(想添加什么功能直接添加相关类)以及维护(哪里出问题直接定位,一个功能出问题不影响其他功能)多态优点:代码组织结构清晰(哪里出问题直接定位),可读性强,利于前期和后期的扩展(想添加什么功能直接添加相关类)以及维护(哪里出问题直接定位,一个功能出问题不影响其他功能)分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类。//如果要提供新的运算,需要修改源码。delete abc;多态案例一-计算器类。

2022-08-19 23:58:26 218

原创 C++多态的基本概念与原理刨析

加上关键字后运行发现这个类占4个字节(PS:不管什么指针都占4个字节,可以考虑指针),多了一个vfptr(virtual function pointer虚函数(表)指针),指向vftable(虚函数表)在Animal中的speak()函数为加上关键字virtual时是一个非静态成员函数,不属于类的对象上,该类类似于一个空类,占一个字节,DoSpeak(cat);cout ...

2022-08-18 21:11:22 61

原创 C++继承中的多继承语法与菱形继承

草泥马继承自动物的数据继承了两份,其实我们应该清楚,这份数据我们只需要一份就可以。羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据时,就会产生二义性。菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义。//语法:class 子类:继承方式 父类1 ,继承方式 父类2。//继承前加virtual关键字后,变为虚继承。使用了虚继承后对比未使用虚继承解决菱形继承。这种继承被称为菱形继承,或者钻石继承。//多继承容易产生成员同名的情况。利用虚继承可以解决菱形继承问题。...

2022-08-17 22:39:22 93

原创 C++继承中的同名成员处理方式与同名静态成员处理方式

当子类与父类拥有同名的成员函数,子类会隐藏父类中所有的同名成员函数,加作用域可以访问到父类中同名函数。总结:同名静态成员处理方式和非静态处理方式一样,只不过有两种访问的方式(通过对象 和 通过类名)问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?问题:继承中同名的静态成员在子类对象上如何进行访问?静态成员和非静态成员出现同名,处理方式一致。子类对象加作用域可以访问到父类同名成员。子类对象可以直接访问到子类中同名成员。访问子类同名成员 直接访问即可。继承同名成员处理方式。.

2022-08-16 22:22:57 396

原创 C++继承的基本语法与三种继承方式

/Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到Son3中的private成员。//可访问 protected权限,父类中的公共权限到了子类中依然是公共权限。//可访问 public权限,父类中的公共权限到了子类中依然是公共权限。//可访问 protected权限。//可访问 protected权限。m_A = 100;//可访问 private权限。//可访问 private权限。//其他类只能访问到公共权限。//m_C = 10;...

2022-08-14 20:16:08 218

原创 C++运算符重载(五)之关系运算符重载

关系运算符重载作用:重载关系运算符,可以让两个自定义类型对象进行对比操作示例:class Person{public: Person(string name, int age) { this->m_Name = name; this->m_Age = age; };​ bool operator==(Person & p) { if (this->m_Name == p.m_Nam

2022-08-13 10:04:01 341

原创 C++运算符重载(四)之赋值运算符重载

不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类类型或者枚举类型的操作数 用于内置类型的操作符,其含义不能改变,例如:内置的整型 + ,不 能改变其含义 作为类成员的重载函数时,其形参看起来比操作数数目少1成员函数的操作符有一个默认的形参this,限定为第一个形参 .*、::、sizeof 、?三、日期赋值= 参数类型 返回值 检测是否自己给自己赋值 返回 * this 一个类如果没有显式定义赋值运算符重载,编译器也会生成一个,完成对象按字节序的值拷贝。...

2022-08-12 09:32:24 708

原创 C++运算符重载(三)之递增运算符重载

如果返回值是一个值,实际上返回的是一个值的副本,因为返回是一个拷贝构造过程,原来的释放了,但是拷贝了一份新的,不受成员函数释放的影响。后置++操作正常是先引用后递增,所以这里用了一个temp来记录递增之前的值,而不是直接返回原来的数的引用,但这里确实不可以进行链式操作了,因为返回回来的对象不是原来的对象,返回的对象是temp。//记录当前本身的值,然后让本身的值加1,但是返回的是以前的值,达到先返回后++;//如果返回值是引用,那么返回值就是本身,如果返回值是一个值,实际上返回的是一个值的副本,拷贝构造。.

2022-08-11 08:29:00 958 4

原创 C++运算符重载(二)之左移运算符重载

/利用成员函数实现左移运算符:p.operator

2022-08-10 09:38:53 581 1

原创 C++运算符重载之加号运算符重载

总结2:不要滥用运算符重载,即你写的函数名是加法,可是函数的实现是减法,可以运行但是这叫滥用。总结1:对于内置的数据类型的表达式的的运算符是不可能改变的,即1+1=2不可变,不会为3.作用:实现两个自定义数据类型相加的运算。...

2022-08-09 09:29:40 1746

原创 C++对象模型和this指针实例分析(二)

/mA = 100在本函数中的本质是this->mA = 100其中this指针是指针常量,this指针指向的对象的数据是可以修改的,但是加上const声明为常函数后其值也不可以修改了。//但是如果成员函数中用到了this指针,就不可以了,需要做判断是否是空指针,增强代码健壮性。//const修饰成员函数,表示指针指向的内存空间的数据不能修改,除了mutable修饰的变量。//不能修改指针的指向 Person* const this;//this指针的本质是一个指针常量,指针的指向不可修改。......

2022-08-08 12:37:38 43

原创 C++面向对象友元关于全局函数,类,成员函数做友元

在类内创建了一个指针,用指针来维护下面在堆区创建的building类,承担着在goodgay类内做一个载体的作用。告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。生活中你的家有客厅(Public),有你的卧室(Private)但是呢,你也可以允许你的好闺蜜好基友进去。友元的关键字为 ==friend==可以设置类与类之间的访问权限。...

2022-08-08 12:35:20 112

原创 C++对象模型和this指针实例分析

PS:注意:一个空的类只占一个字节(为了区分空对象所占内存的位置),但是类里有了非静态成员变量后就占变量所对应的字节。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针。2.在类的非静态成员函数中返回对象本身,可使用return *this。c++通过提供特殊的对象指针,this指针,解决上述问题。this指针是隐含每一个非静态成员函数内的一种指针。在C++中,类内的成员变量和成员函数分开存储。...

2022-08-06 22:09:03 56

原创 C++深拷贝与浅拷贝,初始化列表,对象成员,静态成员相关分析

如果不利用深拷贝在堆区创建新内存,会导致浅拷贝带来的重复释放堆区问题: p1在进行有参初始化时,在堆区申请了一个空间,p1的height指针就指向这个空间,p2在进行拷贝初始化时使用的是编译器提供的浅拷贝,浅拷贝是对成员变量的简单赋值,指针传递的是地址,所以p2的height指针=p1的height指针,即两个height指针指向堆区的同一个地址,函数test01结束后,p1和p2把同一个空间释放了两次,所以程序崩了。C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员。类内声明,类外初始化。..

2022-08-05 21:26:26 363

原创 C++面向对象封装特性的实例分析与应用扩展(二)

这里所说的”同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。相对而言,#ifndef更加灵活,兼容性好,#pragma once操作简单,效率高。#pragma once是一个比较常用的C/C++预处理指令,只要在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次。主体文件之用来存放判断点和圆的关系的函数和main函数,使程序的目的更加明确,代码更加易读。分别创建点类和圆类.h的头文件用来存放类的声明,圆类和点类的.cpp源文件存放类的实现。圆类的声明,圆类的实现。...

2022-08-03 20:07:01 52

原创 C++面向对象封装特性的实例分析与应用扩展(一)

接口是一个共享框架,供两个系统交互时使用,对于类,我们说公共接口。公共时使用类的程序,交互系统由类对象组成,而接口由编写类的人提供的方法组成。

2022-08-02 23:14:32 178

原创 C++引用分析实例与案例刨析及使用场景分析详解

如下图例子返回的是a的一个别名,再用一个别名ref去接收函数返回的别名,最终ref是a的一个别名。本质接收(int*consta,int*constb)传入(&a,&b),编译器自动把识别引用所以使用引用时只传入(a,b)即可。指针常量,地址不可以改变,值可以改变,即引用的地址不可以改变,即。结论C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。既然引用的实质是指针,那我们可以利用指针的性质来进行一些实验性操作,见上图的demo1-demo3。...

2022-08-01 22:20:00 336

原创 C++内存分区模型分析与实例以及扩展

C++中在程序运行前分为全局区和代码区。

2022-07-31 23:37:20 263

原创 关于解决Hexo上传时出现errorSpawn错误的详细说明

问题大多是因为git进行push或者hexod的时候改变了一些.deploy_git文件下的内容。问题可能会重复出现,只需再次删除.deploy_git后重新运行即可。

2022-07-30 21:50:06 375

原创 Godaddy域名解析速度慢问题以及如何使用DNSPod解析解决

阿里公共DNS是阿里巴巴集团推出的DNS递归解析系统,作为国内最大的互联网基础服务提供商,阿里巴巴在继承多年优秀技术的基础上,通过提供性能优异的公共DNS服务,为广大互联网用户提供最可靠的面向互联网用户提供“快速”、“稳定”、“智能”的免费DNS递归解析服务。DNS派拥有全球最领先的云DNS集群技术,领先的分布式云服务,遍布全国的解析服务器,多年DNS领域专业研究,DNS派拥有全球最领先的云DNS集群技术,领先的分布式云服务,遍布全国的解析服务器,能为域名的权威解析提供强有力的支持。...

2022-07-30 21:06:55 2104

空空如也

空空如也

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

TA关注的人

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