MST

星途 面试题库

面试题:C++ 构造函数与普通函数在参数和调用时机上的差异

请阐述 C++ 构造函数与普通函数在参数设置上可能存在的不同点,以及它们各自在程序运行过程中的调用时机有何差异,并举例说明。
12.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

参数设置不同点

  • 构造函数:主要用于初始化对象的数据成员,参数通常是用于初始化对象状态的值。构造函数不能有返回值类型(包括 void),其名称与类名完全相同。例如,对于一个表示二维点的类 Point,构造函数可能接受两个 int 类型参数来初始化点的坐标:
class Point {
public:
    int x;
    int y;
    Point(int a, int b) : x(a), y(b) {}
};
  • 普通函数:参数设置更为灵活,根据函数要实现的具体功能而定。普通函数可以有返回值类型,其函数名是自定义的,只要符合命名规范即可。例如,定义一个计算两点距离的普通函数,它接受两个 Point 对象作为参数:
#include <cmath>
double distance(Point p1, Point p2) {
    return std::sqrt(std::pow(p1.x - p2.x, 2) + std::pow(p1.y - p2.y, 2));
}

调用时机差异

  • 构造函数:在创建对象时自动调用,用于对象的初始化。如果没有显式定义构造函数,编译器会提供一个默认构造函数(前提是类中没有自定义构造函数)。例如:
Point p(10, 20); // 创建对象 p 时,调用构造函数 Point(int, int) 进行初始化
  • 普通函数:在程序中根据需要显式调用,其调用时机取决于程序的逻辑。例如:
Point p1(1, 1);
Point p2(4, 5);
double dist = distance(p1, p2); // 显式调用 distance 函数来计算两点距离