既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
( 1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual
关键字,基类的函数将被隐藏(注意别与重载混淆)。
( 2)如果派生类的函数与基类的函数同名, 并且参数也相同, 但是基类函数没有 virtual
关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
示例程序中:
#include <iostream.h>
class Base
{
public:
virtual void f(float x){ cout << "Base::f(float) " << x << endl; }
void g(float x){ cout << "Base::g(float) " << x << endl; }
void h(float x){ cout << "Base::h(float) " << x << endl; }
};
class Derived : public Base
{
public:
virtual void f(float x){ cout << "Derived::f(float) " << x << endl; }
void g(int x){ cout << "Derived::g(int) " << x << endl; }
void h(float x){ cout << "Derived::h(float) " << x << endl; }
};
( 1)函数 Derived::f(float)覆盖了 Base::f(float)。
( 2)函数 Derived::g(int)隐藏了 Base::g(float),而不是重载。
( 3)函数 Derived::h(float)隐藏了 Base::h(float),而不是覆盖。
多态
1、虚函数的重写 2、父类的指针或引用调用才符合多态条件
多态是在运行时到指向对象的虚表中查找要调用的虚函数的地址来进行调用,如果没加*或&,就会在编译时直接确认类型调用函数的地址
纯虚函数
//virtual void fun(){}//虚函数
virtual void fun() = 0;//纯虚函数
包含纯虚函数的类叫抽象类,抽象类不能实例化出对象
纯虚函数的作用:
1、强制子类去完成重写:父类的纯虚函数virtual void fun() = 0;
子类重写:virtual void func(){}
2、表示抽象的类型,抽象就是在现实中没有对应的实体的。
虚函数表
在32位平台下,没有加virtual大小为1,加了之后就会变4,这是因为加了虚函数关键字,底层会有个vftptr(vitual function table pointer)虚函数表指针;
1、虚函数存在哪?
答:代码段
2、虚函数表(虚表)存在哪?
代码段(常量区)
set
map
下面两种方式等同
//mp.insert(pair<int, int>(6, 6));
mp.insert(make_pair(5, 5));
日常大家喜欢用make_pair因为它不用声明模板参数,自动推
#include<iostream>
using namespace std;
#include<set>
#include<map>
int main()
{
map<int, int>mp;
mp.insert(pair<int,int>(1, 1));
mp.insert(pair<int, int>(3, 3));
mp.insert(pair<int, int>(6, 6));
mp.insert(make_pair(5, 5));
auto lt = mp.begin();
while (lt != mp.end())
{
cout << lt->first << ":" << lt->second << endl;
//cout << (*lt).first << ":" << (*lt).second << endl;
lt++;
}
cout << endl;
return 0;
}
总结:
map
1、增 insert+operator[]
2、删 erase
3、查 find+(不建议operator[])
4、改 operator[]
5、遍历 iterator+范围for -》遍历出来的数据是按k排序的,应为底层是搜索数,走的是
要注意的是map中存的是pair<k,v>键值对
面试题
C++的缺陷有哪些?
多继承就是一个问题-》菱形继承-?虚继承-》底层结构的对象模型非常复杂,且有一定效率损失
什么是菱形继承?菱形继承问题是什么?-》代码冗余,会有二义性-》如何解决?-》虚继承-》解决原理是什么?
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新