摘要: 思考:在C++中是否能够将泛型的思想应用于类? 类模板 一些类主要用于存储和组织数据元素 类中数据组织的方式和数据元素的具体类型无关 如:数组类,链表类,Stack类,Queue类,等 C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能。 C++中的类模板 阅读全文
posted @ 2020-02-07 15:57 认真做个普通人 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 函数模板深入理解 编译器从函数模板通过具体类型产生不同的函数 编译器会对函数模板进行二次编译:对模板代码本身进行编译,对参数替换后的代码进行编译。 注意事项 函数模板本身不允许隐式类型转换 自动推导类型时,必须严格匹配。 显式类型指定时,能够进行隐式类型转换。 范例程序 #include <iost 阅读全文
posted @ 2020-02-07 12:15 认真做个普通人 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 思考问题:C++中有几种交换变量的方法? 交换变量的方法 1)定义宏代码块 优点:代码复用,适合所有的类型。 缺点:编译器不知道宏的存在,缺少类型检查。 #define SWAP(t, a, b) \ do \ { \ t c = a; \ a = b; \ b = c; \ }while(0) 2 阅读全文
posted @ 2020-02-06 17:43 认真做个普通人 阅读(699) 评论(0) 推荐(1) 编辑
摘要: 问题一:关于动态内存分配 new和malloc的区别是什么? delete和free的区别是什么? new关键字与malloc函数的区别 new关键字是C++的一部分 malloc是由C库提供的函数 new以具体类型为单位进行内存分配 malloc以字节为单位进行内存分配 new在申请内存空间时可以 阅读全文
posted @ 2020-02-04 21:05 认真做个普通人 阅读(115) 评论(0) 推荐(0) 编辑
摘要: C++支持编写多重继承的代码 一个子类可以拥有多个父类 子类拥有父类的成员变量 子类继承所有父类的成员变量 子类对象可以当作任意父类对象使用 多重继承的语法规则 class Derived : public BaseA,public BaseB,public BaseC { };//多重继承的本质与 阅读全文
posted @ 2020-02-03 22:12 认真做个普通人 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 什么是抽象类? 面对对象中的抽象概念,在进行面对对象分析时,会发现一些抽象的概念!如下图所示: 在现实中需要知道具体的图形类型才能求面积,所以对概念上的图形,求面积是没有意义的! class shape { public: double area() { return 0; } }; shape只是 阅读全文
posted @ 2020-02-03 13:10 认真做个普通人 阅读(697) 评论(0) 推荐(1) 编辑
摘要: 继承对象模型 在C++编译器的内部类可以理解为结构体 子类是由父类成员叠加子类新成语是你得到的 class Derived:public Demo { int mk; }; 实验验证 1 // 继承对象内存模型.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 2 // 3 阅读全文
posted @ 2020-02-02 21:10 认真做个普通人 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 回归class(对象)的本质 class是一种特殊的struct 在内存中class依旧可以看作变量的集合 class与struct遵循相同的内存对齐规则 class中的成员函数与成员变量是分开存放的,每个对象有独立的成员变量,所有对象共享类中的成员函,。 思考一个问题 对象内存布局实验 1 // 阅读全文
posted @ 2020-02-01 21:51 认真做个普通人 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 函数重写回顾 父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符(::)可以访问父类中的函数 Chidl c; Parent*p = &c; c.Parent::print(); //在父类中继承 c.print(); //在子类中重写 p->print(); 阅读全文
posted @ 2020-02-01 13:07 认真做个普通人 阅读(1767) 评论(0) 推荐(1) 编辑
摘要: 父子间的赋值兼容 子类对象可以直接赋值给父类对象 子类对象可以直接初始化父类对象 父类指针可以直接指向子类对象 父类引用可以直接引用子类对象 实验 // 同名覆盖引发的问题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> cla 阅读全文
posted @ 2020-01-31 16:51 认真做个普通人 阅读(254) 评论(0) 推荐(0) 编辑