面试题答案
一键面试内联函数
- 设计思路:对于短小且频繁调用的成员函数,将其声明为内联函数。内联函数在编译时,函数体的代码会被直接嵌入到调用处,减少函数调用的开销(如栈的开辟与销毁等),从而提升性能。
- 示例代码:
class A {
public:
// 内联函数示例
inline int getValue() const {
return value;
}
private:
int value;
};
函数重载
- 设计思路:合理使用函数重载可以提高代码的可读性和易用性,但对性能提升作用有限。当需要对不同参数类型执行相似操作时,使用函数重载。尽量避免过度重载导致代码复杂度过高,影响可读性和维护性。
- 示例代码:
class A {
public:
void print(int num) {
std::cout << "Printing int: " << num << std::endl;
}
void print(double num) {
std::cout << "Printing double: " << num << std::endl;
}
};
虚函数
- 设计思路:如果类A不需要被继承或者不需要多态行为,尽量避免使用虚函数。虚函数会增加额外的开销,因为调用虚函数需要通过虚函数表指针来查找函数地址。若确实需要多态,应尽量减少虚函数的层数,以降低查找虚函数表的开销。
- 示例代码(假设确实需要多态):
class A {
public:
virtual void doSomething() {
std::cout << "A::doSomething" << std::endl;
}
};
class B : public A {
public:
void doSomething() override {
std::cout << "B::doSomething" << std::endl;
}
};
总结:对于频繁调用且短小的成员函数优先考虑内联;谨慎使用函数重载以提高代码可读性;若非必要尽量避免虚函数,若需要多态则优化虚函数层次。