既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
答:当构造函数涉及到动态存储分配空间时,要自己写拷贝构造函数,并且要深拷贝。
- 构造函数的调用顺序是什么?
答:
1.先调用基类构造函数
2.按声明顺序初始化数据成员
3.最后调用自己的构造函数。
- 哪几种情况必须用到初始化成员列表?
答:类的成员是常量成员初始化;
类的成员是对象成员初始化,而该对象没有无参构造函数。
类的成员为引用时。
- 什么是常对象?
答:常对象是指在任何场合都不能对其成员的值进行修改的对象。
- 静态函数存在的意义?
答:静态私有成员在类外不能被访问,可通过类的静态成员函数来访问;
当类的构造函数是私有的时,不像普通类那样实例化自己,只能通过静态成员函数来调用构造函数。
- 在类外有什么办法可以访问类的非公有成员?
答:友元,继承,公有成员函数。
- 什么叫抽象类?
答:不用来定义对象而只作为一种基本类型用作继承的类。
- 运算符重载的意义?
答:为了对用户自定义数据类型的数据的操作与内定义的数据类型的数据的操作形式一致。
- 不允许重载的5个运算符是哪些?
答:
.*(成员指针访问运算符号)
::域运算符
Sizeof 长度运算符号
?:条件运算符号
.(成员访问符)
- 运算符重载的三种方式?
答:普通函数,友元函数,类成员函数。
- 流运算符为什么不能通过类的成员函数重载?一般怎么解决?
答:因为通过类的成员函数重载必须是运算符的第一个是自己,而对流运算的重载要求第一个参数是流对象。所以一般通过友元来解决。
- 赋值运算符和拷贝构造函数的区别与联系?
答:
相同点:都是将一个对象copy到另一个中去。
不同点:拷贝构造函数涉及到要新建立一个对象。
- 在哪种情况下要调用该类的析构函数?
答:对象生命周期结束时。
- 对象间是怎样实现数据的共享的?
答:通过类的静态成员变量来实现对象间的数据共享。静态成员变量占有自己独立的空间不为某个对象所私有。
- 友元关系有什么特性?
答:单向的,非传递的,不能继承的。
- 对对象成员进行初始化的次序是什么?
答:它的次序完全不受它们在初始化表中次序的影响,只有成员对象在类中声明的次序来决定的。
- 类和对象之间的关系是什么?
答:类是对象的抽象,对象是类的实例。
- 对类的成员的访问属性有什么?
答:public,protected,private。
28.const char *p和char * const p; 的区别
答:
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
- 是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?
答:
virtual修饰符会被隐形继承的。
virtual可加可不加,子类覆盖它的函数不加virtual ,也能实现多态。
- 函数重载是什么意思?它与虚函数的概念有什么区别?
答:函数重载是一个同名函数完成不同的功能,编译系统在编译阶段通过函数参数个数、参数类型不同,函数的返回值来区分该调用哪一个函数,即实现的是静态的多态性。但是记住:不能仅仅通过函数返回值不同来实现函数重载。而虚函数实现的是在基类中通过使用关键字virtual来申明一个函数为虚函数,含义就是该函数的功能可能在将来的派生类中定义或者在基类的基础之上进行扩展,系统只能在运行阶段才能动态决定该调用哪一个函数,所以实现的是动态的多态性。它体现的是一个纵向的概念,也即在基类和派生类间实现。
- 构造函数和析构函数是否可以被重载,为什么?
答:构造函数可以被重载,析构函数不可以被重载。因为构造函数可以有多个且可以带参数,而析构函数只能有一个,且不能带参数。
- 如何定义和实现一个类的成员函数为回调函数?
答:
所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。
定义一个类的成员函数时在该函数前加CALLBACK即将其定义为回调函数,函数的实现和普通成员函数没有区别
- 虚函数是怎么实现的?
答:简单说来使用了虚函数表.
- 抽象类不会产生实例,所以不需要有构造函数。
答: 错
- 从一个模板类可以派生新的模板类,也可以派生非模板类。
答:对
- main 函数执行以前,还会执行什么代码?
答案:全局对象的构造函数会在main 函数之前执行。
- 当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)
答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。
- delete与 delete []区别:
答:delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。
39.子类析构时要调用父类的析构函数吗?
答:会调用。析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了
- 继承的优缺点。
答:
优点:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uqNSuiKA-1715524608282)]
[外链图片转存中…(img-BHghTF40-1715524608283)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!