问题标签 [ownership]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
16679 浏览

c++ - 否则使用 unique_ptr 作为所有权和原始指针?

我正在使用 C++11 编写一些代码。我有

我的类 A 中的“va_x”的 X*s 指向的对象也被我的类 B 中的“vb_x”的 X*s 所指向。

现在我想使用智能指针。对我来说,显然 B 类拥有 X* 指向的对象的所有权(特别是因为我的 A 实例属于 B)

所以我应该在 B 中为 X 使用 unique_ptr:

我的问题是,我应该为A班做些什么?我应该保留原始指针吗?通过这样做,在我的单元测试中,我必须承认它会导致尴尬的事情(imo),例如(不要担心封装,这不是重点):

0 投票
1 回答
49 浏览

ownership - 流程自动化:供 IT 或每个部门实施?

作为一名 IT 网络开发人员,我主要为公司的所有部门(IT、法律、人力资源、工程、技术作家、财务和会计、市场营销等)编写流程自动化代码和报告。

然而,其他一些部门也有小型编程团队(工程、人力资源和市场营销),他们做一些特定于部门的工作,这是他们“核心工作”的一部分。

例如营销维护我们的外部网站,因此需要一些图形艺术家和 HTML/CSS/JS 开发人员来实现它。人力资源部有专门的员工,只使用我们的工资/支付系统,因为它是高度机密的。工程师使用需要高级工程知识的脚本自动进行一些调试/测试。

您如何在这些小型、专家、非 IT 团队应该处理哪些项目和 IT 应该处理哪些项目之间划清界限?是否有最佳实践或可以使用的标准列表?

这个问题既是政治问题又是技术问题,但我正在寻找最佳实践和划清界限的理想方式,而不是政治考虑。

0 投票
1 回答
195 浏览

c++ - 如何将 shared_ptr 传递给裸 ptr 函数

我有一个Entity由库定义的类,Registry它是管理使用地图注册到它的实体的类。

我正在尝试做的事情:

我试图弄清楚如何处理这个问题,因为我保留了 shared_ptr,然后我将不得不传递一个指针。

另一件事是,如果注册表因某种原因被破坏,它将调用delete地图中剩余的所有实体。

如果我通过entity了它的工作原理,但我并没有完全掌握如果在weak_ptr上调用deleteweak_ptr<Entity>(entity)会发生什么。Registry

如果我通过了当引用计数达到零或注册表试图删除它时会发生什么entityentity.get()

0 投票
0 回答
140 浏览

list - Dependency tracking in C++: List of all objects dependent on a single object

I need to develop a library where I need to track list of objects dependent on another object. Boost library provides some features like shared_ptr and intrusive_ptr which allow us to track dependencies but they don't give us details like list of all the other objects pointing to a dependent object.

Suppose we have

#xA;

I need some interface like

#xA;

After the above operations A should have refcount of 2 (plus a list containing B and C).

#xA;

One challenge I see if I opt for overloading operator= is to get reference of object B/C since the operator= will be part of class representing dep_obj object (and Not class representing B or C). Hence I won't be able to fetch object representing A and B using dep_obj (in generic way)

0 投票
2 回答
1962 浏览

git - 如何防止root运行git pull?

需要防止 root 更新 git(工作)目录。推理包括但不限于:防止不希望的文件系统所有权更改。

似乎没有一个 git 钩子在发生之前阻止提取/合并/拉取,类似于 pre-commit 钩子。或者至少,我在这里(或手册页)没有看到: http ://www.analysisandsolutions.com/code/git-hooks-summary-cheat-sheet.htm

想法?

0 投票
2 回答
964 浏览

c++ - 返回参考是一个好主意吗?

我们都知道返回对局部变量的引用是个坏主意。但是,我想知道返回引用是否真的是一个好主意,以及是否有可能确定一些关于何时或何时不这样做的好规则。

我返回引用的问题是调用函数需要关心对象的生命周期,这不应该是它的责任。作为一个人为的例子:

在这里,vector末尾的 超出范围foo,破坏其内容并使对其元素的任何引用无效。vector::operator[]返回对元素的引用,因此当进一步从 中返回此引用时foo,引用 inmain悬空。我不相信 const 引用会延长这里的生命周期,因为它不是对临时的引用。

正如我所说,这是一个人为的例子,作者foo可能不会那么愚蠢地尝试返回v[0]作为参考。但是,很容易看出返回引用如何要求调用者关心它不拥有的对象的生命周期。将一个元素推入一个vector副本中,然后由vector它负责。传递引用参数不存在此问题,因为您知道函数将在调用者继续并销毁对象之前完成。

我可以看到返回引用允许一些不错的类似数组的语法v[0] = 5- 但是拥有这样的成员函数有什么不好v.set(index, value)?至少这样我们就不会暴露内部对象。我知道返回引用也可能会提高性能,但是对于RVO、命名 RVO (NRVO) 和移动语义,它要么可以忽略不计,要么不存在。

所以我一直试图想象在哪些情况下返回引用是真正安全的,但我无法理解它可能涉及的所有不同的所有权语义排列。关于何时执行此操作有什么好的规则吗?

注意:我知道在 s 中处理所有权的更好方法vector是使用智能指针,但是使用不同的对象会遇到同样的问题——谁拥有智能指针?

0 投票
1 回答
1153 浏览

linux - mac OS X 和 linux 之间的 rsync 所有权

我想使用 rsync 将我的 OS X 机器上的本地 Web 应用程序上传到 linux 服务器。

我使用这个命令:

问题是我的本地应用程序有一些属于 _www 的文件夹(在 Mac OS X 上),当上传时,它们都属于 linuxuser,所以我失去了 apache 用户对这些文件夹的所有权。

理想情况下,我会使用 rsync 并且 Mac 上属于 _www 的文件将属于 linux 服务器上的 www-data。

有没有办法做到这一点 ?

0 投票
1 回答
1676 浏览

facebook - 如何通过 ID 号识别 Facebook 应用开发者?

我们去年创建了一个应用程序,并且仍在使用它。现在的问题是,办公室里的任何人都无法在访问 developer.facebook.com 时看到该应用程序。

问:谁是我们应用程序的“所有者”,ID 为 273488249346057

我们尝试了办公室的每个电子邮件地址都没有结果...没有选择,需要一些建议如何检索此信息,以便我们知道我们必须使用什么用户/电子邮件登录

0 投票
5 回答
8077 浏览

c++ - 单一与共享所有权的含义

刚刚看到和拥有时正在阅读RAII的 Wikipedia。SingleShared

谷歌搜索,找不到任何有用的答案!

有人可以为一个男生解释这个概念吗?

0 投票
1 回答
1299 浏览

objective-c - 为什么不能将 ivar 的地址传递给 ARC 下的“id __autoreleasing *”参数?

在 ARC 下,out 参数采用以下形式(默认情况下;这等效于NSError **):

Transitioning to ARC Release Notes中,如果我们传递一个__strong局部变量的地址,编译器将创建一个临时变量并生成以下代码:

但是如果我们用一个实例变量来做:

这给了我们错误

将非本地对象的地址传递给__autoreleasing参数以进行回写。

为什么这是无效的?编译器不能自动将这样的代码翻译成这个吗?

毕竟,这是我无论如何都会写来解决问题的!

注意:将out关键字添加到参数类型会稍微减少编译器的工作,因为它不必将当前值读入临时变量——但这并不能解决错误。