说说 C++中 struct 和 class 的区别⭐⭐⭐⭐⭐
说说C++结构体和C结构体的区别⭐⭐⭐⭐⭐
nullptr调用成员函数可以吗?为什么?⭐⭐⭐⭐⭐
析构函数必须为虚函数吗?构造函数可以为虚函数吗?⭐⭐⭐⭐⭐
构造与析构的顺序⭐⭐⭐⭐⭐
请说说你对多态的理解⭐⭐⭐⭐⭐
重载和重写的区别⭐⭐⭐⭐⭐
可以通过引用实现多态吗?⭐⭐⭐⭐⭐
=========================================================================================================
- 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
- 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
- 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
- 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
- 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
- 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。
=========================================================================================================
说说 C++中 struct 和 class 的区别⭐⭐⭐⭐⭐
struct 一般用于描述一个数据结构集合,而 class 是对一个对象数据的封装;
struct 中默认的访问控制权限是 public 的,而 class 中默认的访问控制权限是 private 的,例如:
struct A{ int iNum; // 默认访问控制权限是 public } class B{ int iNum; // 默认访问控制权限是 private }
在继承关系中,struct 默认是公有继承,而 class 是私有继承;
class 关键字可以用于定义模板参数,就像 typename,而 struct 不能用于定义模板参数,例如:
template<typename T, typename Y> // 可以把typename 换成 class int Func(const T& t, const Y& y) { //TODO }
说说C++结构体和C结构体的区别⭐⭐⭐⭐⭐
(1)C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。
(2)C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。
(3)C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。
(4)C 中使用结构体需要加上 struct 关键字,或者对结构体使用 typedef 取别名,而 C++ 中可以省略 struct 关键字直接使用。
nullptr调用成员函数可以吗?为什么?⭐⭐⭐⭐⭐
能。
原因:因为在编译时对象就绑定了函数地址,和指针空不空没关系。
答案解析
//给出实例 class animal{ public: void sleep(){ cout << "animal sleep" << endl; } void breathe(){ cout << "animal breathe haha" << endl; } }; class fish :public animal{ public: void breathe(){ cout << "fish bubble" << endl; } }; int main(){ animal *pAn=nullptr; pAn->breathe(); // 输出:animal breathe haha fish *pFish = nullptr; pFish->breathe(); // 输出:fish bubble return 0; }
原因:因为在编译时对象就绑定了函数地址,和指针空不空没关系。
pAn->breathe();
编译的时候,函数的地址就和指针pAn绑定了;调用