gpt4 book ai didi

C++ 数据成员。目标 : Initialize in constructor then leave alone, 会在这里工作吗?

转载 作者:行者123 更新时间:2023-11-28 01:04:13 25 4
gpt4 key购买 nike

我有以下内容

    struct dweDMPair {
const dweller *occu;
const double sqDM;
float prob;
dweDMPair(dweller *inOccu, double sqdm) : occu(inOccu), sqDM(sqdm) {} };

我想返回一个指向这些对象的指针数组,但希望它们不会被客户端意外删除。或者,错误,也许不是,只是尝试这个设计迭代。

我的问题是,是否有一种(非常简洁明了的)方法来指定(正如我用 const 前缀说明的那样)成员只在构造函数中赋值?

我知道 private/public 和 interface/methods 可以对此进行排序,但幽默一下,const 关键字可以被利用到什么程度?

_编辑_

Nawaz,我的目标只是在构造函数中将 3 个数据成员中的 2 个初始化一次。然后我可以将该实例导出为 const dweDMPair *ptrToVal,这样客户端就不能再调用 delete- 因为这对指向 const 实例的指针不起作用,对吗?然后客户端将继续为第三个成员 prob 提供他们自己的值。是的,我知道函数强制执行保护,但我希望它更快。

成员不能是静态的,而是实例成员。如果您想知道..

最佳答案

是的,const 做你想做的。请注意,您在构造函数初始化列表中所做的不是赋值,而是初始化。你不能分配给 const 对象,但你可以用一个值来初始化它们。此外,无论将它们设为 const,您可能需要考虑将这些成员作为私有(private)成员封装在一个类中。它并没有增加多少输入,但确实提高了可维护性。

编辑:

要定义 const 指针,您可以:

Type * const member;

不是

const Type* member;

第二种语法是指向常量类型的指针,而不是常量指针。

关于C++ 数据成员。目标 : Initialize in constructor then leave alone, 会在这里工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7223432/

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