gpt4 book ai didi

c++ - 有没有办法检查在 C++ 中复制或分配对象是否安全?

转载 作者:行者123 更新时间:2023-11-30 03:09:13 24 4
gpt4 key购买 nike

我有以下问题。我在必须用 C++ 编写的程序中使用 C 库 igraph (http://igraph.sourceforge.net/)。所以我找到了这个 C 库的 c++ 包装器 (http://code.google.com/p/igraphhpp/),它在一个名为 Graph 的类中提供了一些我想使用的不错的接口(interface)。

我的程序中有以下类(class):

class Agent 
{
private:
double beta;
Graph * innerGraph;
public:
Agent(int N, double beta_) {
innerGraph = new Graph;
*innerGraph = Graph::full(N);
beta = beta_;
};
~Agent() {delete innerGraph;}
void MCStep();
};

函数 MCStep() 必须执行以下操作:

  • 复制包含在*innerGraph中的Graph,
  • 在不改变原件的情况下对这个拷贝做一些事情,
  • 检查更改后的拷贝是否满足某些条件,如果是,则用这个新的修改后的图更新 *innerGraph

如果我知道这个库实现了一个安全的复制构造函数,我会以显而易见的方式去做,但我不知道。如何检查?

最佳答案

查看Graph的源码,复制构造函数是否调用了这个函数:

http://igraph.sourceforge.net/doc/html/ch04s02s01.html#igraph_copy

没有通用的方法 - C++ 语言本身对“深拷贝”或“浅拷贝”一无所知,因此就这点而言,拷贝构造函数对它来说都是一样的。在理想的世界中,任何发布像这样的 C++ 包装器的人都会记录它,在这种情况下可能应该使它成为一个完整的深层拷贝。

关于c++ - 有没有办法检查在 C++ 中复制或分配对象是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287189/

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