第一次实习面试
- 解释一下C++的多态
在C++中,多态(Polymorphism)是指一种机制,使得基类的指针或引用可以用来调用派生类的函数,从而实现对不同数据类型的统一操作。多态主要通过以下两种方式实现:
编译时多态(静态多态):
1.函数重载(Function Overloading):多个同名函数但参数列表不同。
2.运算符重载(Operator Overloading):重载运算符以适应不同的数据类型。
class Print { public: void display(int i) { std::cout << "Integer: " << i << std::endl; } void display(double d) { std::cout << "Double: " << d << std::endl; } };
运行时多态(动态多态):
虚函数(Virtual Functions):通过基类指针或引用调用派生类的函数。实现运行时多态需要使用关键字 virtual
。
class Base { public: virtual void show() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: void show() override { std::cout << "Derived class" << std::endl; } }; int main() { Base* b; Derived d; b = &d; b->show(); // 输出:Derived class return 0; }
在这个例子中,基类 Base
中的函数 show
被声明为虚函数(virtual
),这样在调用 b->show()
时,会动态地绑定到派生类 Derived
的 show
函数,实现了运行时多态。
2. 解释一下,vector中的in-place和push_back
in-place(原地构造)和push_back(插入新元素),是在容器内直接构造元素,而不是线构建临时对象然后在拷贝或移动到容器中。 这样可以避免不必要的拷贝和移动,提高性能。 使用emplace_back实现。
push_back:会将元素添加到vector的末尾,而insert可以在指定位置插入元素。
insert 函数可以在指定位置上插入元素。
3. 介绍超声设备的原理
超声设备利用超声波(一种频率高于人类听觉范围的声波,通常超过20 kHz)来进行各种应用,如成像、检测、清洗和测距等。
超声波成像(医学超声)
原理:超声波探头发射超声波,波在人体内部传播并遇到不同组织界面时反射回来。探头接收反射波并通过计算机处理生成图像。
超声波测距:
原理:超声波传感器发射一束超声波,波遇到物体表面反射回来。通过测量发送和接收超声波的时间差,计算出物体的距离。