C++基础回炉
C++基础
Ma浩然
嵌入式打杂专家
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++第59课--类模板深度剖,类模板的特化,函数模板的特化
本文学习自 狄泰软件学院 唐佐林老师的 C++课程,文中图片源自老师课程PPT。实验1:类模板的特化实验2:特化的深入理解:函数模板的完全特化实验1:类模板的特化#include <iostream>#include <string>using namespace std;template< typename T1, typename T...原创 2020-02-17 16:05:03 · 330 阅读 · 0 评论 -
C++第58课--类模板的概念和意义
本文学习自 狄泰软件学院 唐佐林老师的 C++课程,文中图片源自老师课程PPT。实验1:类模板初探实验2:类模板工程写法实验1:类模板初探#include <iostream>#include <string>using namespace std;template < typename T >class Operator{...原创 2020-02-17 14:47:53 · 333 阅读 · 0 评论 -
C++第57课--深入理解函数模板,多参数函数模板,重载函数模板
本文学习自 狄泰软件学院 唐佐林老师的 C++课程,文中图片源自老师课程PPT。实验1:函数模板的本质实验2:多参数函数模板实验3:重载函数模板从编译器角度来看,函数模板本身不是函数,它只是一个产生函数的模子,因此函数模板本身是不允许隐式类型转换的!实验1:函数模板的本质#include <iostream>#include <string>usi...原创 2020-02-17 12:52:09 · 552 阅读 · 0 评论 -
C++第56课--函数模板的概念和意义
本文学习自 狄泰软件学院 唐佐林老师的 C++课程引子:之前学习的C/C++中至少有两种交换变量的方式,分别是宏代码块和函数,但是他们有各自的缺陷,宏由于是在预处理阶段替换的,所以编译器不知道宏的存在,缺少类型检查。而定义函数的话,虽然编译器可以进行类型检查,但是却需要根据类型重复定义函数,无法代码复用。由此,C++ 推出了 泛型编程的概念(函数模板,类模板),不考虑具体数据类型的编程方式。...原创 2020-02-17 11:40:13 · 332 阅读 · 0 评论 -
C++第54课--被遗弃的多重继承(下),继承中类型转换问题,多重继承工程做法
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:用C方式强制类型转换所带来的的问题实验2:通过 dynamic_cast<>强制类型转换实验3:单继承+实现多个接口实验1:用C方式强制类型转换所带来的的问题#include <iostream>#include <string>using namespace std;class...原创 2020-02-06 15:34:05 · 403 阅读 · 0 评论 -
C++第53课--被遗弃多重继承(上),同一个对象地址不同,数据冗余
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:多重继承问题1,通过多重继承得到的对象可能拥有不同的地址父类A指针p1 指向子类C的头部父类B指针p2 指向子类C的胸部实验2:多重继承问题2:产生冗余实验3:实验2续,使用作用域访问父类成员函数 d.Teacher::print(); d.Student::print();实验4:多重继承产生数据冗余的解决方案:...原创 2020-02-06 12:06:03 · 467 阅读 · 0 评论 -
C++第52课--C++中的抽象类和接口
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:抽象类实验实验2 : 接口,特殊的抽象类实验1:抽象类实验#include <iostream>#include <string>using namespace std;class Shape{public: virtual double area() = 0;};...原创 2020-02-06 10:22:16 · 395 阅读 · 0 评论 -
C++第51课--C++ 对象模型分析(下)
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:继承模型初探,继承情况下 对象模型的内存分布实验2:证明虚函数指针的存在实验3:C实现虚函数,虚函数本质分析实验1:继承模型初探,继承情况下 对象模型的内存分布#include <iostream>#include <string>using namespace std;class Demo...原创 2020-02-05 22:27:24 · 312 阅读 · 0 评论 -
C++第50课--C++ 对象模型分析(上),对象的本质,运行时对象退化为普通的结构体,对象在内存上所包含的就只有成员变量
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1 : 对象的本质,运行时对象退化为普通的结构体,权限访问关键字在程序运行时失效,可以通过内存地址直接访问成员变量。实验2:对象的本质,运行时对象退化为普通的结构体,对象在内存上所包含的就只有成员变量实验3:通过C语言 模拟类的函数调用!!!成员变量可能存在 栈空间,堆空间,全局数据区。而 成员函数只能在代码段。实验1 : 对...原创 2020-02-05 14:25:33 · 396 阅读 · 0 评论 -
C++第49课--多态的概念和意义
本文学习自 狄泰软件学院 唐佐林老师的 C++课程当 函数重写遇到赋值兼容 如上节最后一例的解析,编译器会草率的为了安全直接调用指针或引用类型的类的成员函数,而不会理会所指向的类型是什么,这样不符合我们是实际要求,于是 推出了多态的概念,将父类中的有可能被重写的成员函数加上 virtual 虚函数属性,这样的话,virtual 告诉编译器, print() 有可能在后续被继承的过程中被重写的,...原创 2020-02-05 11:53:45 · 394 阅读 · 0 评论 -
C++第48课--同名覆盖引发的问题,父子间的复制兼容原则,父子间的函数重写,当函数重写遇到赋值兼容
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:父子间的赋值兼容实验2:函数重写遇到赋值兼容会发生什么?实验1:父子间的赋值兼容#include <iostream>#include <string>using namespace std;class Parent{public: int mi; void ad...原创 2020-02-04 23:56:06 · 332 阅读 · 0 评论 -
C++第47课--父子间的冲突,父子间成员的同名覆盖
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:在子类中定义父类的同名成员 现象实验2:在子类中定义父类的同名成员实验3:父子间的同名函数可以重载? 不能实验1:在子类中定义父类的同名成员 现象#include <iostream>#include <string>using namespace std;class Parent{p...原创 2020-02-04 23:17:20 · 355 阅读 · 0 评论 -
C++第46课--继承中的构造与析构
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:子类构造初探实验2: 子类构造深度剖析实验3:对象的析构创建子类对象的时候,会调用子类的构造函数,同时会默认调用父类的无参构造函数或者默认参数的构造函数。如果父类没有提供无参构造函数或者无参构造函数,必须通过子类在初始化列表中显式调用父类的有参构造函数。实验1:子类构造初探#include <iostream&...原创 2020-02-04 20:22:00 · 288 阅读 · 0 评论 -
C++第45课--不同的继承方式
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验2:继承与访问级别深度实践实验1: 不同的继承方式#include <iostream>#include <string>using namespace std;class Parent{};class Child_A : public Parent{};class Child_B...原创 2020-02-04 14:44:50 · 306 阅读 · 0 评论 -
C++第44课--继承中的访问级别
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:继承中的访问级别实验2:protected 初体验,protected 修饰的成员不能被外界直接访问,可以被子类直接访问。实验1:继承中的访问级别#include <iostream>#include <string>using namespace std;class Parent{pr...原创 2020-02-04 11:49:20 · 272 阅读 · 0 评论 -
C++第43课--继承的概念和意义
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:组合关系描述实验2:继承初体验实验3:子类对象可以直接初始化,赋值给父类对象实验1:组合关系描述#include <iostream>#include <string>using namespace std;class Memory{public: Memory() {...原创 2020-02-03 22:31:00 · 349 阅读 · 0 评论 -
C++第42课--类型转换函数(下),将当前类型转化为其它类型--类型转换函数
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:类型转换函数 :当前类转换为其他类, 隐式类型转换实验2:类类型之间的相互转换----类型转化内函数 VS 转换构造函数实验3: 避免 类型转转换函数 与 转换构造函数 之间冲突实验4:用 Type toType() 类普通成员函数 替代 类型转换函数实验1:类型转换函数 :当前类转换为其他类, 隐式类型转换#inc...原创 2020-02-03 16:18:47 · 314 阅读 · 0 评论 -
C++第41课--类型转换函数(上) ,将其它类型转换为当前类型--转换构造函数
本文学习自 狄泰软件学院 唐佐林老师的 C++课程转换构造函数 就是 构造函数,只不过说这种构造函数只有一个参数(其他类型的参数)而已。实验1: 隐式类型转换隐患回顾实验2:普通类型 --> 类类型 转换, 转换构造函数进行隐式类型转换实验3:限制编译器只能显示的调用转换构造函数,explicit关键字大多编译器认为 int类型的数据运算时最高效的。char 和 short...原创 2020-02-03 15:25:47 · 316 阅读 · 0 评论 -
C++第40课--前置操作符++重载和后置操作符++重载
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:++i 和 i++ 真的不一样吗#include <iostream>#include <string>using namespace std;int main(){ int i = 0; i++; ++i; return 0;}实际工程里所使用的编译...原创 2020-02-03 13:40:42 · 452 阅读 · 0 评论 -
C++第39课--逗号操作符分析,逗号操作符重载没啥意义,使用原生的逗号操作符就好
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1 :逗号表达式回顾实验2:重载逗号操作符实验3:重载逗号操作符的陷阱实验1 :逗号表达式回顾#include <iostream>#include <string>using namespace std;void func(int i){ cout << "func() ...原创 2020-02-03 12:06:04 · 284 阅读 · 0 评论 -
C++第38课--逻辑操作符的陷阱,逻辑操作符&& ||重载 -- 不建议使用
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:逻辑操作符 && || 重载 的陷阱#include <iostream>#include <string>using namespace std;class Test{ int mValue;public: Test(int v) { ...原创 2020-02-03 11:16:24 · 458 阅读 · 0 评论 -
C++第37课--智能指针分析
本文学习自 狄泰软件学院 唐佐林老师的 C++课程在C++工程项目中,尽量少的使用C中的原生指针,用智能指针代替原生的指针变量字符串我们用 string类来代替,避免使用字符指针数组我们数组对象来代替函数指针我们用函数对象来代替实验1:内存泄漏实验2:智能指针的创建,智能指针,通过对象模拟指针实验1:内存泄漏#include <iostream>#inclu...原创 2020-02-02 21:33:37 · 375 阅读 · 0 评论 -
C++第36课--经典问题解析(三) 赋值操作符重载与拷贝构造函数,字符串string类...
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:默认的赋值操作符重载#include <iostream>#include <string>using namespace std;class Test{ int* m_pointer;public: Test() { m_pointer = NULL;...原创 2020-02-02 19:29:01 · 316 阅读 · 0 评论 -
C++第35课--函数对象分析 即 函数调用操作符重载
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验2:函数调用操作符重载实验1:解决方案1#include <iostream>#include <string>using namespace std;int fib(){ static int a0 = 0; static int a1 = 1; int ret...原创 2020-02-02 15:09:11 · 211 阅读 · 0 评论 -
C++第34课--数组操作符重载
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1 :可以按照使用C字符串的方式使用 string 对象实验2:数组访问操作符的重载实验1 :可以按照使用C字符串的方式使用 string 对象#include <iostream>#include <string>using namespace std;int main(){ str...原创 2020-02-02 14:23:08 · 346 阅读 · 0 评论 -
C++第33课--C++中的字符串类
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:利用C++标准库 使用String类,排序,连接#include <iostream>#include <string>using namespace std;void string_sort(string a[], int len){ for(int i=0; i<len; i...原创 2020-02-02 12:51:39 · 359 阅读 · 0 评论 -
C++第32课--初探C++标准库
本文学习自 狄泰软件学院 唐佐林老师的 C++课程#include <iostream>#include <cmath>using namespace std;int main(){ cout << "Hello world!" << endl; double a = 0; double...原创 2020-02-01 17:57:10 · 267 阅读 · 0 评论 -
C++第31课--完善复数类
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1Complex.h#ifndef _COMPLEX_H_#define _COMPLEX_H_class Complex{ double a; double b;public: //指定构造函数参数 默认值,在声明的地方指定,在定义的地方不需要指定 Complex(double a = 0, do...原创 2020-02-01 17:12:38 · 375 阅读 · 0 评论 -
C++第30课--操作符重载的概念
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:通过实现 Add() 实现复数相加#include <stdio.h>class Complex { int a; int b;public: Complex(int a = 0, int b = 0) { this->a = a; this-...原创 2020-02-01 14:31:06 · 292 阅读 · 0 评论 -
C++第29课--类中的函数重载
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:类与重载全面分析#include <stdio.h>class Test{ int i;public: Test() { printf("Test::Test()\n"); this->i = 0; } Test(int ...原创 2020-01-30 13:42:00 · 252 阅读 · 0 评论 -
C++第28课--友元的尴尬能力
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:函数与类的友元关系友元的引入:友元是为了兼顾C语言的高效而诞生的,但是友元直接破坏了面相对象的封装性。#include <stdio.h>#include <math.h>class Point{ double x; double y;public: Point(dou...原创 2020-01-30 12:19:57 · 237 阅读 · 0 评论 -
C++第27课--二阶构造模式
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:在构造函数中间 return ,函数会直接返回,构造函数执行结束,但是并不意味着对象构造成功。实验2:二阶构造实验1:在构造函数中间 return ,函数会直接返回,构造函数执行结束,但是并不意味着对象构造成功。#include <stdio.h>class Test{ int mi; in...原创 2020-01-29 20:48:52 · 285 阅读 · 0 评论 -
C++第26课--类的静态成员函数
本文学习自 狄泰软件学院 唐佐林老师的 C++课程通过需求:《随时可以获取当前对象的数目》来引出 类的静态成员函数;方案1: 当前对象数目为私有的静态只读变量,可以通过成员函数获取,但是必须要定义新的对象才能获取到,舍弃。方案2:将当前对象数目设置为public 的静态成员变量,通过类名访问,但是非常不安全,可以随意修改,舍弃。方案3:将当前对象数目设置为private 的静态成员变量,...原创 2020-01-29 18:36:08 · 386 阅读 · 0 评论 -
C++第25课--类的静态成员变量
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1 :类中的成员变量的是每个对象私有的,对象间的成员变量不共享。实验2:静态成员变量使用在非const 成员函数中,可以直接访问修改所有的成员变量,也可以通过对象名访问所有的成员变量实验1 :类中的成员变量的是每个对象私有的,对象间的成员变量不共享。#include <stdio.h>class Test{...原创 2020-01-29 14:48:45 · 315 阅读 · 0 评论 -
C++第24课--经典问题分析(二) 构造析构顺序,const只读对象,const成员变量,const成员函数,this当前对象指针
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:构造与析构的顺序实验2:只读对象的成员变量是只读变量实验3:只读对象的非const成员函数不能被调用实验4:const 成员函数内部不能直接修改成员变量的值,并且函数内部只能调用const 成员函数实验5: this 当前对象指针实验6 :非const成员函数中可以直接访问对象的成员变量,哪怕是通过对象 和’.'操作符来访问私...原创 2020-01-29 12:41:33 · 426 阅读 · 0 评论 -
C++第23课--神秘的临时变量
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1 :临时对象的引入实验2:避免产生临时对象实验3:临时对象的生成和声明周期1实验4:临时对象的生成和声明周期2实验5:C++编译器对减少临时对象所做的工作实验6:实验5:C++编译器对减少临时对象所做的工作深入理解要避免产生临时对象,在C语言中我们警惕是野指针,那么在C++里面我们最应该警惕是野指针和临时对象。实验1 ...原创 2020-01-29 00:11:08 · 547 阅读 · 1 评论 -
C++第22课--对象的销毁 析构函数
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:析构函数使用实验1:析构函数使用#include <stdio.h>class Test{ int mi;public: Test(int i) { mi = i; printf("Test(): %d\n", mi); } ~Tes...原创 2020-01-28 22:41:20 · 278 阅读 · 0 评论 -
C++第21课--对象的构造顺序
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1: 局部对象的创建顺序–当程序执行流到达对象的定义语句时进行构造实验2:对于全局对象,对象的构造顺序是不确定的,不同的编译器使用不同的规则确定构造顺序实验1: 局部对象的创建顺序–当程序执行流到达对象的定义语句时进行构造#include <stdio.h>class Test{private: i...原创 2020-01-28 22:05:41 · 315 阅读 · 0 评论 -
C++第20课--初始化列表的使用
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:类中是否可以存在const成员,可以的话该怎么初始化实验2:初始化列表的使用Value 类对象的创建,Value类中只有一个带参构造函数,编译器不会为其添加无参构造函数,所以此处的无参对象会创建失败类成员变量只能用初始化列表进行初始化实验3:const只读成员变量的初始化和修改实验1:类中是否可以存在cons...原创 2020-01-28 21:02:44 · 688 阅读 · 0 评论 -
C++第19课--对象的构造(下)深拷贝与浅拷贝
本文学习自 狄泰软件学院 唐佐林老师的 C++课程实验1:无参构造函数 和 拷贝构造函数实验2:2.1 在类中自定了拷贝构造函数的请况下 创建无参对象 的冲突2.2 在类中自定了有参构造函数的情况下 创建无参对象 的冲突实验3:浅拷贝问题–涉及到堆空间会出现重复释放内存实验4 :深拷贝应用:涉及到堆空间操作一定要用深拷贝对象的构造函与内存操作实验1:无参构造函数 和 拷贝构...原创 2020-01-28 17:05:32 · 383 阅读 · 0 评论
分享