gpt4 book ai didi

C++构造函数问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:13 25 4
gpt4 key购买 nike

C++ programming for the absolute Beginner, 2nd edition 一书中,有以下声明:

HeapPoint::HeapPoint(int x, int y): thePoint(new Point(x,y)) { }

这是否等于:

HeapPoint::HeapPoint(int x, int y) { thePoint = new Point(x,y); }

而且,由于我们是在构造函数中执行此操作,因此为 xy 分配的值是多少?我们应该在 new Point(x,y) 中写入 xy 的值吗?或者,这样是正确的?

更新:我想我想到了初始化 xy,因为在书中它在一个函数中有以下内容:

HeapPoint myHeapPoint(2,4);

最佳答案

通常您应该更喜欢第一个构造,即使用初始化列表。

第二个构造是可取的,如果

  1. 你想试试..捕获它或者
  2. 您有其中的几个,并将它们存储为常规指针,在这种情况下,您需要注意其中一个消息可能会失败,您需要进行一些清理。您可以使用某种 auto_ptr/unique_ptr 来处理这个问题,直到您知道所有分配都已成功,然后再释放它们。这是因为您可能会在析构函数中删除它们,但如果构造函数抛出,您的析构函数将不会被调用。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com