C++面试必备:继承方式与sizeof与strlen深度解析
17 浏览量
更新于2024-08-30
收藏 113KB PDF 举报
"C++面试常见问题的整理,涵盖了继承方式、sizeof与strlen的区别等核心知识点。"
在C++编程语言中,面试时经常会遇到一些关键性的技术问题,这些问题能够反映应聘者的理论基础和实践能力。以下是对这些知识点的详细解释:
1. **继承方式**
- **public继承**:子类可以访问父类的所有公有和保护成员,保持了访问权限不变。
- **protected继承**:子类只能访问父类的保护成员,将父类的公有成员降级为保护成员。
- **private继承**:子类只能访问父类的公有和保护成员,但它们都变为私有,不能被子类的公共接口直接访问。
```cpp
class Base {
public:
void printA() { cout << "Base" << endl; }
protected:
void printHello() { cout << "Hello" << endl; }
private:
void printNoHello() { cout << "NoHello" << endl; }
};
class Derived : public Base {
public:
void printB() { printHello(); } // 访问protected成员
// void printC() { printNoHello(); } // 私有成员不可访问
};
```
2. **sizeof和strlen的区别**
- **sizeof** 是一个运算符,它返回对象或类型的大小(以字节为单位),在编译时就能确定。
- **strlen** 是一个库函数,用于计算以空字符'\0'结束的字符串的长度,需要在运行时计算。
- `sizeof` 对于数组,它会返回整个数组所占的内存空间,而对于指针,它返回的是指针本身的大小。
- `strlen` 只能处理字符串,即字符数组,它不适用于非字符串的数组,因为它寻找的是终止符'\0'。
```cpp
int a[] = {1, 2, 3, 4, 5};
cout << sizeof(a) << endl; // 输出数组a的总大小,如20(假设int是4字节)
char b[] = {'a', 'b'}; // 注意,此处没有'\0'
cout << strlen(b) << endl; // 未定义行为,因为strlen期望'\0'终止符
cout << sizeof(b) << endl; // 输出字符数组b的大小,如2(包括'\0')
```
理解这些基本概念对于理解和编写高质量的C++代码至关重要。在面试中,面试官可能会深入探究这些主题,包括多态、指针操作、函数声明与调用、变量初始化、方法重载和虚函数等。熟悉并能够灵活应用这些知识点将有助于在面试中脱颖而出。
2021-04-09 上传
2020-12-26 上传
2023-05-17 上传
2023-09-24 上传
2023-05-22 上传
2023-07-28 上传
2023-08-13 上传
2024-06-25 上传
weixin_38594266
- 粉丝: 4
- 资源: 907
最新资源
- 企业人事管理系统论文
- [计算机科学经典著作].Prentice.Hall.Bruce.Eckel.Thinking.In.C++,.Second.Edition.Volume.2.Standard.Libraries.Advanced.Topics
- SAPConnectiongToc#
- [计算机科学经典著作].Prentice.Hall.Bruce.Eckel.Thinking.In.C++,.Second.Edition.Volume.1
- 信息安全技术介绍(第一章)
- pro_dns_and_bind
- 基于贝叶斯算法的垃圾邮件过滤技术的研究与改进
- 企业人事管理系统论文
- c++builder的自定义属性
- Flex 3 CookBook 简体中文
- Core Java. 8th Edition
- Oracle 程序开发指南
- ATM 原理 V1.0
- ADSL原理及其应用
- 操作系统课程习题答案
- 基于ASP的网上选课论文