cuốn sách gpt4 ai đã làm

c++ - C++中的构造函数继承

In lại Tác giả: Walker 123 更新时间:2023-11-28 06:08:53 hai mươi bốn 4
mua khóa gpt4 Nike

我有两个问题要问。为什么人们在类的头部实现一些方法?喜欢:

công cộng:
point2D():x(0),y(0){};
point2D(int xP, int yP):x(xP),y(yP){};

这与在不同文件(性能、内存)中实现的真正区别是什么?

我的第二个问题是关于构造函数在继承中的使用。

1. point2D::point2D(){
2. x = 10;
3. y = 10;
4. }

5. point2D::point2D(int xP, int yP){
6. x = xP;
7. y = yP;
8. }

9. point3D::point3D(){
10. point2D();
11. z = 0;
12. }

13. point3D::point3D(int xP, int yP, int zP){
14. point2D(xP, yP);
15. z = zP;
16. }

当我尝试在单独的 CPP 中创建我的构造函数时,接收 3 个参数的 point3D 的构造函数(第 13 行)尝试使用具有 2 个整数参数的 point2D 构造函数(第 14 行),实际调用的构造函数是没有参数的 point2D。为什么?我们在构造函数的调用中有 2 个参数。

谢谢你们,我希望我的疑虑是清楚的。

câu trả lời hay nhất

问题 1:

我希望这就是您要问的。

人们倾向于在头文件和类中实现构造函数,如果它没有太多工作要做并且可以像上面那样写在 1 行上。这只是风格,因人而异。另一个原因是因为它是内联的,以提高性能。

否则,如果您正在谈论构造函数初始化列表 (CONSTR(...) : { })那么这样做的原因是它初始化数据成员,当你在构造函数的主体中分配给它们时(就像你在第二段代码中所做的那样)那么这不是初始化它,而是分配给它们并且是效率较低。虽然它确实有用,但有时您需要在获取数据成员值之前做其他工作。例如获取输入。

问题 2:

你又必须使用构造函数初始化列表而不是主体所以这里是一个例子

point3D::point3D(int xP, int yP, int zP) : point2D(xP, yP), z(zP) { }

关于c++ - C++中的构造函数继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712293/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress