C++经典面试题目(五)

1、类的成员变量和成员函数有什么区别?

  • 成员变量是类中存储数据的成员,描述了类的状态。成员函数是类中定义的操作数据的函数,用于实现类的行为。成员变量存储对象的状态信息,而成员函数用于操作和访问这些状态信息。

2、什么是构造函数?它有什么作用?

  • 构造函数是一种特殊的成员函数,用于在对象创建时对其进行初始化。构造函数的名称与类名称相同,不返回任何值,可以有参数。它在对象创建时自动调用,用于执行对象的初始化操作,确保对象被正确地初始化。

3、请解释析构函数的作用。

  • 析构函数是一种特殊的成员函数,用于在对象被销毁时释放资源。析构函数的名称与类名称相同,前面加上波浪号(~),不接受任何参数,不返回任何值。它在对象销毁时自动调用,用于执行对象的清理操作,释放对象占用的资源。

4、在C++中,如何实现类的封装?

  • 类的封装是一种面向对象编程的重要概念,它将数据和操作数据的函数封装在一个单独的实体中,从而实现了数据隐藏和保护。在 C++ 中,可以通过在类中定义成员变量和成员函数,并使用访问控制符(public、private 和 protected)来实现类的封装。

5、请解释类的访问控制符public、private和protected的区别。

  • public:公有成员可以在类的内部和外部被访问。它们可以被类的成员函数和类的外部代码访问。
  • private:私有成员只能在类的内部被访问。它们不能被类的外部代码直接访问,只能通过类的成员函数来访问。
  • protected:保护成员类似于私有成员,但它们可以在派生类中被访问。它们不能被类的外部代码直接访问,只能通过类的成员函数或派生类的成员函数来访问。

6、栈和堆有什么区别?

  • 栈和堆都是计算机内存中用于存储数据的区域,但它们有以下区别:
    • 栈是一种先进后出的数据结构,用于存储函数的局部变量、函数的参数值和函数的返回地址等。栈的内存由编译器自动分配和释放,存储的数据在作用域结束时自动销毁。
    • 堆是一种动态分配的内存区域,用于存储程序运行期间动态分配的数据。堆的内存由程序员手动分配和释放,存储的数据在手动释放之前一直存在。

7、如何使用new和delete操作符进行动态内存分配和释放?

  • new 操作符用于在堆上动态分配内存,并返回指向分配内存的指针。语法如下:
    int* ptr = new int;
    
  • delete 操作符用于释放由 new 分配的内存,防止内存泄漏。语法如下:
    delete ptr;
    

8、什么是内存泄漏?如何避免它?

  • 内存泄漏是指程序运行期间分配的内存未被释放,导致程序占用的内存不断增加,最终耗尽系统资源。要避免内存泄漏,需要及时释放不再使用的内存,可以通过合理使用 newdelete 操作符、智能指针等手段来避免内存泄漏。

9、请解释C++中的if-else语句的使用。

  • if-else 语句用于根据条件执行不同的代码块。语法如下:
    if (condition) {
        // code to be executed if condition is true
    } else {
        // code to be executed if condition is false
    }
    

10、switch-case语句在C++中的作用是什么?

- `switch-case` 语句用于根据表达式的值执行不同的代码块。它可以替代多个嵌套的 `if-else` 语句,使代码更加简洁和易读。语法如下:
   ```cpp
   switch (expression) {
       case value1:
           // code to be executed if expression equals value1
           break;
       case value2:
           // code to be executed if expression equals value2
           break;
       // more cases...
       default:
           // code to be executed if expression doesn't match any case
           break;
   }
   ```
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值