C++之操作重载符学习总结(一)
一、完善的复数类:在上一篇文章里面我们已经提到了操作符重载的概念和使用,同时也举例了一个数学里面的复数操作,从一开始使用友元到使用操作符重载全局函数,再到使用操作符重载类成员函数,这样一步步演变而成我们最终实现了复数的实部加实部,虚部加虚部;而且当时我们只讲解了一个操作重载符“+”,所以为了完善学习体系,咋们今天继续把剩下的操作重载符总结完,以免知识体系零零散散。那么复数完善的操作符还有那些呢,其实很简单就能能想到,和对数学里面的实数操作一样,加减乘除肯定是少不了嘛,下面是汇总的操作符总结:运算:+、-、*、/比较:==、!=赋值: =求模:modulus2、各操作符重载的形式:代码实现:test.h头文件:test.cpp文件:main.cpp文件:......阅读全文
C++之操作重载符学习总结(一)
一、完善的复数类:在上一篇文章里面我们已经提到了操作符重载的概念和使用,同时也举例了一个数学里面的复数操作,从一开始使用友元到使用操作符重载全局函数,再到使用操作符重载类成员函数,这样一步步演变而成我们最终实现了复数的实部加实部,虚部加虚部;而且当时我们只讲解了一个操作重载符“+”,所以为了完善学习
C++之操作符重载学习总结(一)
一、操作符重载:1、我们先来看一个问题实现,下面的复数解决方案是否可行,复数大家应该都不陌生(分为实部和虚部):代码版本一:运行结果:这里通过Add函数可以解决Complex对象相加的问题,但是在我们数学运算里面就是直接实部加实部,虚部加虚部,和正常的实数相加一样,所以说,为什么不直接这样操作呢,这
C++之操作重载符学习总结(二)
运行结果:上面设计到一些数学知识,比如复数的乘法和除法运算:乘法:(a+bi)(c+di)=(ac-bd)+(bc+ad)i除法:(a+bi)/(c+di)=(ac+bd)/cc+dd +(bc-ad)/cc +dd3、注意事项:C++规定赋值操作符"="只能重载为成员函数操作符重载不能改变原操作符
C++之操作符重载学习总结(二)
4、再次改进代码:可以将操作符重载函数定义成为类的成员函数(前面我们学过,友元现代软件开发不允许):比全局操作符重载函数少一个参数(左操作数,成员函数中隐藏的 this 参数可以充当左操作数的角色)不需要依赖友元就可以完成操作符重载编译器优先在成员函数中寻找操作符重载(一旦在成员函数中找到,就不会去
C++之字符串类学习总结(一)
一、回顾c语言对字符串的实现:一般我们在c语言要实现对字符串操作的话,一般是采用字符数组或者一组函数来实现的,为啥这样做呢,那是因为c语言里面根本就没有字符串类型的关键字;而且c语言也支持自定义类型,所以更加无法获得字符串类型。为了解决这个问题,在c++中,引入了自定义类型,而且可以通过类来完成对字
C++之字符串类学习总结(二)
三、字符串与数字的转换:标准库中提供了相关的类对字符串和数字进行转换字符串流类(sstream)用于string的转换相关头文件istringstream字符串输入流ostringstream字符串输出流1、方法使用string---数字数字---string代码示例:输出结果:2、字符串循环右移比
C++之继承中的构造和析构学习总结(一)
在我们前面学习过类中的构造函数,以及析构函数,那么自然而然,在继承关系中,必然是存在着析构和构造着。一、子类对象的构造1、问题的引出如何初始化父类成员?父类构造函数和子类构造函数有什么关系?2、子类中的构造函数怎样初始化父类成员:子类中也是可以定义构造函数的:--必须对继承而来的成员进行初始化,那么
C++之静态成员变量和静态成员函数学习总结(一)
上图的板子有最近买的,也有以前买的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、树莓派3b+);说实话,这些板子买来,一直放在那里吃灰,后期自己的方向也不玩硬件开发板啥的;所以上面的板子都送给了公众号读者在校生,让这些板子发挥它们最大的价值,板子也会在最近慢慢一一送出去;赠
C++之类的继承访问级别学习总结(一)
一、继承中的访问级别学习:1、子类是否可以直接访问父类的私用成员吗?从面向对象理论角度来看:子类拥有父类的一切属性和行为,也就是说,子类能够直接访问父类的私有成员。从c++的语法角度看:外界不能直接访问类的private成员,也就是说,子类不能直接访问父类的私用成员。代码示例:#include <i
C++之类的继承关系学习总结(一)
一、类的组合关系:1、整体与部分的关系组合关系,从字面上来理解的话,就是谁也离不开谁,必须相互组合在一起才行,例如我们生活当中的电脑组成:代码示例:#include <iostream>#include <string>using namespace std;class Memory{public:
C++之友元的学习总结
一、友元的概念:1、什么是友元?友元是c++中的一种关系友元关系发生在函数与类之间或者类与类之间友元关系是单项的,不能传递2、友元的用法:在类中以friend关键字声明友元类的友元可以是其它类或者具体函数友元不是类的一部分友元不受类中访问级别的限制友元可以直接访问具体类的所有成员3、友元的语法:在类
C++之继承中的构造和析构学习总结(二)
代码实践:输出结果:注解:我们可以看到,先定义了一个Child对象,然后最先访问Object带参构造函数,然后再是Parent带参构造函数(说白了就是父类先触发),然后在子类Child中又包含了组合关系(也就是客人),然后Object类中的带参构造函数,最后再触发自身的带参构造函数。二、子类对象的析
C++之静态成员变量和静态成员函数学习总结(二)
说明,这里静态成员变量不能使用初始化列表去初始化,这里要明白上面说的那句话:静态成员变量需要在类外单独分配空间,换句话说,就是只有在类的外部重新定义静态成员变量才可以存储到静态存储区。报错如下:root@txp-virtual-machine:/home/txp# g++ test4.cpptest
C++之静态成员变量和静态成员函数学习总结(三)
3、静态成员函数 vs 普通成员函:静态成员函数普通成员函数所有对象共享YesYes隐含this指针NoYes访问普通成员变量(函数)NoYes访问静态成员变量(函数)YesYes通过类名直接调用YesNo通过对象名直接调用YesYes4、版本代码四:#include <stdio.h>class
C++之类模板的深入学习总结
一、类模板的深入学习:1、类模板可以定义任意多个不同的类型参数(这一点和模板函数一样)template < typename T1, typenaem T2 >class Test{public: void add(T1 a, T2 b);}//定义类对象时Test2、类模板可以被特化指定类模
C++之类的继承关系学习总结(二)
二、类的继承关系:说到这个继承,你可以把它类比成生活当中的父亲和儿子,儿子继承的父亲的长相特征。那么在我们面向对象中继的承又是指什么呢?1、面向对象中的继承是指类之间的父子关系子类拥有父类的所有属性和行为子类就是一种特殊的父类子类对象可以当作父类对象使用子类中可以添加父类中没有的方法和属性2、继承代
C++之类的继承访问级别学习总结(四)
输出结果:root@txp-virtual-machine:/home/txp# ./a.outObjectPointP(1, 2)LineLine from P(1, 2) to P(5, 6)二、总结:面向对象中的访问级别不只是public和privateprotected修饰的成员不能别外界所
C++之类的继承访问级别学习总结(二)
代码实现#include <iostream>#include <string>using namespace std;class Parent{protected: int mv;public: Parent() { mv = 100; } in
C++之类的继承访问级别学习总结(三)
4、定义类时访问级别的选择:注解:从图中我们可以发现,当有发生继承关系时,就考虑使用protect关键字5、组合和继承的综合运用说明:Object这个类是被用来继承的;Line和Point两个类进行组合。代码示例:#include <iostream>#include <string>#includ
C++之函数模板的概念和意义(一)
一、函数模板的引出:1、c++中有几种交换变量的方法:(1)定义宏代码块(2)定义函数代码版本一:#include <iostream>#include <string>using namespace std;#define SWAP(t,a,b) do {
学习笔记之传输线损耗(一)
我梦中的信号通道是无损传输线,有一天它会身披光滑铜箔,脚踏“无损”板材来搭救我的高速信号。梦想很丰满,现实却很骨感,“无损”板材和表面粗糙度为零的绝对光滑铜箔在工程应用中并不存在,所以,残酷的现实是“损耗易把能量抛,缓了边沿,降了眼高”。信号在传播过程中的能量损失不可避免,传输线损耗产生的原因有以下
C++之拷贝构造函数的浅copy和深copy(一)
一、深拷贝和浅拷贝构造函数总结:1、两个特殊的构造函数:(1)无参构造函数:没有参数的构造函数Class Test{ public: Test() { //这是一个无参构造函数 }};当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空;换句
再论C++中的const和引用(一)
今天给大家分享一下这段时间学习c++的总结学习:c++里面的const关键字和引用。一、const关键字的总结1、const什么时候为只读变量,什么时候又是常量呢?(1)const常量的判别规则:只用字面量初始化的const常量才会进入符号表使用其它变量初始化的const常量仍然是只读变量被vola
C++之函数模板的概念和意义(二)
输出结果:root@txp-virtual-machine:/home/txp# ./a.outa= 5b= 2m= 4n= 6d= Txpt= xiaoping注解:同样实现了交换功能。2、两种方法的优缺点:定义宏代码块-优点:代码复用,适合所有的类型-缺点:编译器不知道宏的存在,缺少类型检查定义
C++之函数模板的概念和意义(三)
以下是选择排序算法测试代码 int array[5]={3,5,6,4,9}; Println(array,5); Sort(array,5); Println(array,5); string s[5]={"c","c++","rust","golang","python"}
C++之类型转换函数(一)
一、转换构造函数的学习:1、回忆数据类型转换:在平时写代码的时候,最怕的就是那种隐式数据类型转换了,一不小心,软件就bug不断;而显示数据类型(一般是程序自己去强制类型转换,这个是我们能够明显的识别和掌控的)。为此我们这里总结了一副隐式类型转换的图:下面我们来几个隐式转换的例子:代码版本一:#inc
EMC学习之电磁辐射
我们在接触新鲜事物的时候,通常习惯用自己熟悉的知识去解释自己不熟悉的事物。EMC知识更多的涉及到微波和射频,对于像我这种专注于信号完整性而对EMC知识知之甚少的菜鸟来说,最初也只能用SI的一些基础知识去撬开EMC设计的大门了。在我的认知里,EMI关注的是电磁能量的辐射,包括外部电磁环境对自身系统的干
一文读懂什么是运算符(一)
运算符运算符:以1 + 2为例,1和2被称为操作数,“+” 称为运算符。Python语言支持以下类型的运算符:算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符三目运算符算术元运算符以下假设变量: a=10,b=20:python中,有三种除法,分别是:1.计算结果
学习笔记之传输线基础
单独一根导线可以传输信号吗?有人可能会有疑问:貌似我们经常碰到当怀疑PCB走线有问题,然后把线刮断再从外面飞根线就没问题了,此时飞线不就是一根吗?怎么就可以传输信号了呢?其实这里忽略了一点,虽然在外面飞了根线,但PCB上面还有其他的平面,这个平面就相当于返回路径,和我们的PCB上单端信号一样,信号管
C++之拷贝构造函数的浅copy和深copy(二)
(3)注意:在写程序的时候,定义的类对象初始化时看属于哪种类型的:Test t;//对应无参构造函数Test t(1);//对应有参构造函数Test t1;Test t2=t1;//对应拷贝构造函数比如下面我定义的类对象属于无参构造函数(当然前提是你手写了其他构造函数,虽然说编译器会默认提供,但是既