C++之类的继承访问级别学习总结(三)
4、定义类时访问级别的选择:注解:从图中我们可以发现,当有发生继承关系时,就考虑使用protect关键字5、组合和继承的综合运用说明:Object这个类是被用来继承的;Line和Point两个类进行组合。代码示例:#include <iostream>#include <string>#include <sstream>using namespace std;class Object{protected: string mName; string mInfo;public: Object() { mName = "Object"; mInfo = ""; } strin......阅读全文
C++之类的继承访问级别学习总结(三)
4、定义类时访问级别的选择:注解:从图中我们可以发现,当有发生继承关系时,就考虑使用protect关键字5、组合和继承的综合运用说明:Object这个类是被用来继承的;Line和Point两个类进行组合。代码示例:#include <iostream>#include <string>#includ
C++之类的继承访问级别学习总结(一)
一、继承中的访问级别学习:1、子类是否可以直接访问父类的私用成员吗?从面向对象理论角度来看:子类拥有父类的一切属性和行为,也就是说,子类能够直接访问父类的私有成员。从c++的语法角度看:外界不能直接访问类的private成员,也就是说,子类不能直接访问父类的私用成员。代码示例:#include <i
C++之类的继承访问级别学习总结(二)
代码实现#include <iostream>#include <string>using namespace std;class Parent{protected: int mv;public: Parent() { mv = 100; } in
C++之类的继承访问级别学习总结(四)
输出结果:root@txp-virtual-machine:/home/txp# ./a.outObjectPointP(1, 2)LineLine from P(1, 2) to P(5, 6)二、总结:面向对象中的访问级别不只是public和privateprotected修饰的成员不能别外界所
C++之类的继承关系学习总结(二)
二、类的继承关系:说到这个继承,你可以把它类比成生活当中的父亲和儿子,儿子继承的父亲的长相特征。那么在我们面向对象中继的承又是指什么呢?1、面向对象中的继承是指类之间的父子关系子类拥有父类的所有属性和行为子类就是一种特殊的父类子类对象可以当作父类对象使用子类中可以添加父类中没有的方法和属性2、继承代
C++之类的继承关系学习总结(一)
一、类的组合关系:1、整体与部分的关系组合关系,从字面上来理解的话,就是谁也离不开谁,必须相互组合在一起才行,例如我们生活当中的电脑组成:代码示例:#include <iostream>#include <string>using namespace std;class Memory{public:
C++之类模板的深入学习总结
一、类模板的深入学习:1、类模板可以定义任意多个不同的类型参数(这一点和模板函数一样)template < typename T1, typenaem T2 >class Test{public: void add(T1 a, T2 b);}//定义类对象时Test2、类模板可以被特化指定类模
C++之继承中的构造和析构学习总结(一)
在我们前面学习过类中的构造函数,以及析构函数,那么自然而然,在继承关系中,必然是存在着析构和构造着。一、子类对象的构造1、问题的引出如何初始化父类成员?父类构造函数和子类构造函数有什么关系?2、子类中的构造函数怎样初始化父类成员:子类中也是可以定义构造函数的:--必须对继承而来的成员进行初始化,那么
C++之继承中的构造和析构学习总结(二)
代码实践:输出结果:注解:我们可以看到,先定义了一个Child对象,然后最先访问Object带参构造函数,然后再是Parent带参构造函数(说白了就是父类先触发),然后在子类Child中又包含了组合关系(也就是客人),然后Object类中的带参构造函数,最后再触发自身的带参构造函数。二、子类对象的析
C++之类型转换函数(三)
输出结果(没有编译通过)root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:21:14: error: cannot convert ‘Test’ to ‘int’ i
C++之友元的学习总结
一、友元的概念:1、什么是友元?友元是c++中的一种关系友元关系发生在函数与类之间或者类与类之间友元关系是单项的,不能传递2、友元的用法:在类中以friend关键字声明友元类的友元可以是其它类或者具体函数友元不是类的一部分友元不受类中访问级别的限制友元可以直接访问具体类的所有成员3、友元的语法:在类
C++之操作重载符学习总结(二)
运行结果:上面设计到一些数学知识,比如复数的乘法和除法运算:乘法:(a+bi)(c+di)=(ac-bd)+(bc+ad)i除法:(a+bi)/(c+di)=(ac+bd)/cc+dd +(bc-ad)/cc +dd3、注意事项:C++规定赋值操作符"="只能重载为成员函数操作符重载不能改变原操作符
C++之操作重载符学习总结(一)
一、完善的复数类:在上一篇文章里面我们已经提到了操作符重载的概念和使用,同时也举例了一个数学里面的复数操作,从一开始使用友元到使用操作符重载全局函数,再到使用操作符重载类成员函数,这样一步步演变而成我们最终实现了复数的实部加实部,虚部加虚部;而且当时我们只讲解了一个操作重载符“+”,所以为了完善学习
C++之静态成员变量和静态成员函数学习总结(三)
3、静态成员函数 vs 普通成员函:静态成员函数普通成员函数所有对象共享YesYes隐含this指针NoYes访问普通成员变量(函数)NoYes访问静态成员变量(函数)YesYes通过类名直接调用YesNo通过对象名直接调用YesYes4、版本代码四:#include <stdio.h>class
C++之操作符重载学习总结(一)
一、操作符重载:1、我们先来看一个问题实现,下面的复数解决方案是否可行,复数大家应该都不陌生(分为实部和虚部):代码版本一:运行结果:这里通过Add函数可以解决Complex对象相加的问题,但是在我们数学运算里面就是直接实部加实部,虚部加虚部,和正常的实数相加一样,所以说,为什么不直接这样操作呢,这
C++之字符串类学习总结(一)
一、回顾c语言对字符串的实现:一般我们在c语言要实现对字符串操作的话,一般是采用字符数组或者一组函数来实现的,为啥这样做呢,那是因为c语言里面根本就没有字符串类型的关键字;而且c语言也支持自定义类型,所以更加无法获得字符串类型。为了解决这个问题,在c++中,引入了自定义类型,而且可以通过类来完成对字
C++之操作符重载学习总结(二)
4、再次改进代码:可以将操作符重载函数定义成为类的成员函数(前面我们学过,友元现代软件开发不允许):比全局操作符重载函数少一个参数(左操作数,成员函数中隐藏的 this 参数可以充当左操作数的角色)不需要依赖友元就可以完成操作符重载编译器优先在成员函数中寻找操作符重载(一旦在成员函数中找到,就不会去
C++之字符串类学习总结(二)
三、字符串与数字的转换:标准库中提供了相关的类对字符串和数字进行转换字符串流类(sstream)用于string的转换相关头文件istringstream字符串输入流ostringstream字符串输出流1、方法使用string---数字数字---string代码示例:输出结果:2、字符串循环右移比
C++之类型转换函数(四)
3、转换构造函数出厂:我们前面学习过构造函数,构造函数它可以定义不同类型的参数;但是我们今天这里所说的转换构造函数的定义时这样的:有且仅有一个参数参数是基本类型参数是其它类型接着我们对上面的普通数据类型转换类类型的代码进行分析:#include <iostream>#include <string>
C++之类型转换函数(六)
2、类类型之间的转换:这个问题也是之前我们上面简单的测试,不能进行类类型之间的转换;现在我们学习了类型转换函数,是可以进行转换的:代码版本一:#include <iostream>#include <string>using namespace std;class Test;class Value{
C++之类型转换函数(一)
一、转换构造函数的学习:1、回忆数据类型转换:在平时写代码的时候,最怕的就是那种隐式数据类型转换了,一不小心,软件就bug不断;而显示数据类型(一般是程序自己去强制类型转换,这个是我们能够明显的识别和掌控的)。为此我们这里总结了一副隐式类型转换的图:下面我们来几个隐式转换的例子:代码版本一:#inc
C++之类型转换函数(七)
输出结果:root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:42:15: error: conversion from ‘Test’ to ‘Value’ is am
C++之类型转换函数(二)
输出结果:root@txp-virtual-machine:/home/txp# ./a.outd =-200ui= 100(ui+i) = 4294967196Postive注解:通过打印(ui+i)的值我们发现,i原本是int数据类型,这里隐式转换成无符号的数据类型了为了让大家更加理解隐式的转换
C++之类型转换函数(五)
输出结果:root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:21:8: error: no match for ‘operator=’ (operand types
C++之静态成员变量和静态成员函数学习总结(二)
说明,这里静态成员变量不能使用初始化列表去初始化,这里要明白上面说的那句话:静态成员变量需要在类外单独分配空间,换句话说,就是只有在类的外部重新定义静态成员变量才可以存储到静态存储区。报错如下:root@txp-virtual-machine:/home/txp# g++ test4.cpptest
C++之静态成员变量和静态成员函数学习总结(一)
上图的板子有最近买的,也有以前买的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、树莓派3b+);说实话,这些板子买来,一直放在那里吃灰,后期自己的方向也不玩硬件开发板啥的;所以上面的板子都送给了公众号读者在校生,让这些板子发挥它们最大的价值,板子也会在最近慢慢一一送出去;赠
再论C++中的const和引用(三)
(5)在工程项目开发中:当进行c++编程时,直接站在使用的角度来看待引用,与指针毫无关系,引用就是变量的别名当对C++代码进行调试分析时,一些特殊情况,可以考虑站在C++编译器的角度来看待引用代码实践:版本一:#include <stdio.h>int a = 2;struct SV{ int&
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++之拷贝构造函数的浅copy和深copy(三)
输出结果:root@txp-virtual-machine:/home/txp# g++ test.cpproot@txp-virtual-machine:/home/txp# ./a.outt1.i = 2, t1.j = 3, t1.p = 0x1528010t2.i = 2, t2.j = 3
三羧酸循环的循环总结介绍
乙酰-CoA+3NAD++FAD+ADP+Pi+CoA-SH—→2CO2+3NADH+FADH2+ATP+3H++CoA-SH 1、CO₂的生成,循环中有两次脱羧基反应(反应3和反应4)两次都同时有脱氢作用,但作用的机理不同,由异柠檬酸脱氢酶所催化的β氧化脱羧,辅酶是nad+,它们先使底物脱氢