每日一题
二分查找. - 力扣(LeetCode)
class Solution {
public:
int search(vector<int>& nums, int target) {
int l = 0,r = nums.size()-1;//左右边界
while(l <= r){
int mid = (r - l) / 2 + l;//中间的值
int ans = nums[mid];
if(ans == target) return mid;//如果相等返回mid
else if(ans < target) l = mid + 1;//小于目标值在右边部分,更新左边界
else r = mid - 1;//反之更新右边界
}
return -1;
}
};
八股
C++ 中类的三大特性是什么?请简要解释
类的三大特性是封装、继承和多态。
-
封装(Encapsulation):封装是将数据和操作这些数据的方法组合在一起,形成一个类。通过封装,类可以隐藏其内部实现细节,只暴露必要的接口给外部使用。这有助于提高代码的安全性和可维护性。
-
继承(Inheritance):继承是指一个类可以从另一个类派生,获取其属性和方法。这样可以实现代码的重用,并允许创建层次结构,例如基类和派生类之间的关系。派生类可以扩展或重写基类的功能。
-
多态(Polymorphism):多态允许不同类的对象以相同的方式被处理。通过虚函数,基类可以定义一个接口,而派生类可以实现这个接口的具体行为。这样,程序在运行时可以根据对象的实际类型来调用相应的方法,实现动态绑定。
什么是构造函数和析构函数?它们的作用是什么?
构造函数:
- 定义:构造函数是类的一个特殊成员函数,用于初始化类的对象。当一个对象被创建时,构造函数会被自动调用。
- 作用:构造函数的主要作用是为对象的成员变量分配初始值,设置对象的初始状态。它可以接受参数,以便在创建对象时传入不同的值。
- 特性:构造函数没有返回值,名称与类名相同,可以重载以支持多种初始化方式。
析构函数:
- 定义:析构函数是类的另一个特殊成员函数,用于在对象生命周期结束时自动调用,通常是在对象超出作用域或被删除时。
- 作用:析构函数的主要作用是清理对象所占用的资源,比如释放动态分配的内存、关闭文件句柄、断开网络连接等。这样可以防止内存泄漏和资源泄漏。
- 特性:析构函数没有返回值,名称与类名相同,但前面加上波浪号(~),不能重载,也不能带参数。
ps:仅个人观点,后续可能会进行更改