访问私人会员指针的假设
Assumptions when accessing private member pointer inside class
我有一个包含私人指针指向struct的类(这是托管的C ,结构是本地的)。该指针指出的对象基本上是在构造函数中创建的,并活着直到含有类别的类别。一旦在Foo
的构造函数中分配了另一个对象,就没有代码将指针重新分配给另一个对象,并且我不设想将来会有任何对象。
我对与使用智能指针有关的答案不感兴趣,因为我在某些旧代码中使用了许多原始指针。将所有内容移植是另一回事,并且正在计划。
我的问题是:
-
在有效性方面,在班级工作时,我该对指针有什么想法?
-
如果我有几个使用该类的私人功能...我应该始终检查这些功能之前的
nullptr
,或者我可以假设指针指向一个有效的对象,给定构造类的方式的有效对象(如果这是本机C ,我只会使指针成为实际的对象,以使其消失)? -
做任何更好的方法,不涉及为
SomeStructType
或智能指针创建另一个托管包装器?public ref class Foo { private: SomeStructType* pMyStruct; void Initialize() { pMyStruct = new SomeStructType(); } void DoSomethingElse1(); //Uses pMyStruct void DoSomethingElse2(); //Uses pMyStruct public: void DoSomething(); //Uses pMyStruct or calls private func that does Foo() { Initialize(); } ~Foo() { delete pMyStruct; } }
否,您不需要每次检查它,因为合同(和C 规则)意味着该对象始终存在于您可以尝试访问的任何时候有效的方法。
如果可以重新分配它,并且您处于多线程环境中,则可能需要锁定对其的访问。那将是我能想到的唯一问题。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 访问私人会员指针的假设
- 如果存在任何循环关系,我应该假设弱指针使用吗?
- 假设sqlite3_exec数据库指针不更改其值是否为保存
- 是否可以安全地假设64位指针中的16个高位(2个对我来说足够了)是未设置的
- 假设引用是作为指针传递的,这有效吗