先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
~A() {
cout << “这里是A的析构函数” << endl;
}
};
class B :public A{
private:
int b;
public:
B(int b=0) :A(b){//要在B构造函数的初始化列表对A进行初始化,
this->b = b;
cout << “这里是B的构造函数” << endl;
}
~B() {
cout << “这里是B的析构函数” << endl;
}
};
int main_01() {
B b1(2);
b1.print();//b1对象既有类A的属性,又有类B的属性;输出的是B类的print
b1.A::print();//输出类A的print;
return 0;
}
===========================================================================
子类可以初始化父类:
初始化时调用父类的拷贝构造函数;
父类的指针与引用可以指向子类;
子类有父类没有的方法,并且可以完成父类的工作;
值得注意的是:
在基类的指针或者引用与子类的对象关联时就好像指针只与子类对象
的一部分进行了关联;仅仅是用子类对象的一部分属性
初始化出来了基类的对象,并且该对象中没有子类的成员属性;
具体实现方法如下:
//基类的指针与引用可以指向子类的对象;
//子类的对象可以对父类进行初始化;
#include
using namespace std;
class A1 {
public:
int a;
int b;
public:
void print() {
cout << “A1 A1:”<<" : "<<a<<b << endl;
}
};
class B1:public A1 {
public:
int a;
int b;
public:
B1(int a, int b) {
this->a = a;
this->b = b;
A1::a = 100;
A1::b = 200;
}
void print() {
cout << " " << B1::a<<" "<< B1::b << endl;
cout << “B1 B1”<<" : "<<a<<b << endl;
}
int getA() {
return a;
}
};
int main_02() {
B1 b1(1, 2);
A1 a1= b1;//(兼容赋值原则)(子类直接给父类的对象赋值)
A1* p = NULL;
p = &b1;//将子类的地址赋给基类的指针;
A1& q = b1;//基类还可以做子类的引用;
// B1* q = NULL;
// q = &a1;也不可以进型子类的指针指向基类的对象
// B1 b2 = a1;可以将子类的对象赋值给父类的对象:不能反向操作;因为子类对象有父类没有的东西;
//分割线*******************************************
cout << “” << endl;
cout << q.a << endl;
q.print();//打印的还是A类的东西;
cout << “-----------------------------0-----” << endl;
p->print();//输出的是A类内的元素;并且调用的是A类的打印函数;
cout << p->a << endl;//打印A类的元素
b1.print();//只有这句话调用了b的打印函数
a1.print();//没有显示的对a1成员属性进行操作:但输出了100 200;如果将a1=b1去掉则输出乱码:
//由此可知b1中的A1::a与A1::b对a1中的a,b进行了初始化;
return 0;
}
===================================================================================
子类与父类难免有些成员属性会重名;由于有作用域的限制子类继承时可以将同名的属性与方法继承下来;
只需在使用时稍加注意即可:
默认情况子类在调用重名属性时会先调用自己的属性;
语法:子类对象名.重名函数;
想要调用基类的是重名属性的方法:(使用域作用符):
语法:子类对象名.基类名::重名属性;【::是域作用符】
========================================================================
在C++中一个类可以继承多个类;并且拥有他们的属性与方法;
但有时候会产生二义性
ABCD四个类继承如图所示:
A //A是BC的基类
/ \ //BC继承A后可能分别会以不同的方式初始化A
【假设A没有无参构造函数】必须由B或者C进行初始化
B C
\ /
D //D在同时继承BC,如果初始化D的对象时,
调用B还是C的构造函数去初始化A?
这就使编译器十分矛盾;产生了二义性;
解决方法;利用虚继承:virtual关键字在继承时进行限定;
【讲多态的时候会着重讲virtual关键字】
具体实现方法如下:
#include
using namespace std;
class AA {
public:
int a;
AA(int a = 0) {
this->a = a;
}
void print() {
cout << " AA" << endl;
}
};
class BB:virtual public AA {//
public:
int b;
BB(int b = 0):AA(1) {
this->b = b;
}
void print() {
cout << “BB” << endl;
}
};
class CC:virtual public AA {//
public:
int c;
CC(int c = 0):AA(2) {
this->c = c;
}
void print() {
cout << “CC” << endl;
}
};
class DD :public BB,public CC{
public:
int d;
//初始化继承到的基类
DD(int d=0):BB(d),CC(d),AA(d) {//如果不是虚继承 那么不可以直接用DD去初始化AA
this->d = d;
}
void ptint() {
cout << “DD” << endl;
}
};
int main() {
DD d1(666);
cout << “b c d” << endl << d1.b << d1.c << d1.d << endl;
cout << d1.a << endl;
// cout << d1.a << endl;//不明确A是哪个里面的---------解决方案—虚继承virtual
cout << d1.AA::a << endl;//没有虚继承时输出了BB对象的属性
cout << d1.BB::a << endl;//虚继承后输出的均是最后一次对该成员变量的操作的值
cout << d1.CC::a << endl;//virtual会对其自动进行改变
cout << "BB " << sizeof(BB) << "CC " << sizeof(CC) << "DD " << sizeof(DD) << endl;//虚继承输出12 12 24
return 0;//不虚继承输出 8 8 20;
}
用virtual关键字处理后,类的大小有所改变;具体原因在多态中
A B //C同时继承了AB,但AB中有一变量名相同,
\ /
C //在C通过域作用符调用AB中的同名变量时;会产生二义性;
解决方法:
在C的对象调用那个变量时加上AB的作用符进行限定;
比如使用A中的aa属性调用方法则为
C.A::aa
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-Qo34kU3Y-1713285469269)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!