【C++】几道关于this指针的面试题
2023-09-14 09:15:59 时间
第一题:this 指针存在哪里?
💡 答案:一般情况下是存栈中(形参)。有些编译器会放到寄存器中,如VS2013,放到 ecx 中。
第二题:下列程序编译运行结果是? A. 编译报错 B. 运行崩溃 C. 正常运行
class A {
public:
void Show() {
cout << "Show()" << endl;
}
private:
int _a;
};
int main()
{
A* p = nullptr;
p->Show();
}
💡 答案:C. 正常运行
编译器只能检查语法错误,空指针不是语法错误,所以A选项编译报错是错的。
第三题:下列程序编译运行结果是? A. 编译报错 B. 运行崩溃 C. 正常运行
#include <iostream>
using namespace std;
class A {
public:
void PrintA() {
cout << _a << endl;
}
private:
int _a;
};
int main()
{
A* p = nullptr;
p->PrintA();
}
💡 答案:B. 运行崩溃
分析:
① p 虽然是空指针,但是 p 调用成员函数不会编译报错,因为这不是语法错误,编译器检查不出来,编译报错是编译器报的语法错误。
② p 虽然是空指针,但是 p 调用成员函数也不会出现空指针,因为成员函数没有存在对象里面。
③ 这里会把 p 作为实参传递给隐藏的 this 指针。
本篇完。
相关文章
- cvte2020年c++实习生面试题
- 阿里巴巴面试题- - -Java体系最新面试题(2022资料)
- 深入理解C++11_c++ string char
- c++ auto类型_auto C++
- python面试题及答案_微型计算机原理与接口第四版答案
- C++基本概念_c语言 c++区别
- Python常见面试题整理
- 秋招面试题系列- - -Java工程师(九)
- 校招前端经典react面试题(附答案)
- 10道JavaWeb常问面试题
- 腾讯前端一面常考面试题_2023-03-13
- 去公司面试,记录下的hadoop最新面试题详解大数据
- C++经典面试题(最全,面中率最高)详解编程语言
- Redis面试宝典:掌握最新的Redis面试题(redis面试题)
- Linux 命令行面试常见问题(linux常用命令面试题)
- 25个Oracle面试题,帮助你准备数据库管理职位的面试(oracle的面试题)
- 常见MySQL面试常驻,了解你的MySQL知识(常见mysql面试题)
- 掌握Linux编程,从此面试无忧(linux编程面试题)