访问类中的私有成员指针时的假设

时间:2017-02-19 21:15:57

标签: c++ pointers managed-c++

我有一个包含指向结构的私有指针的类(这是托管C ++,结构是本机的)。这个指针指向的对象基本上是在构造函数中创建的,直到包含的类被处理掉。在Foo的构造函数中指定另一个对象后,没有代码将指针重新指定给另一个对象,我不认为将来会有任何对象。

我对使用智能指针的答案不感兴趣,因为我在一些遗留代码中使用了很多原始指针。将一切都移植到另一个问题上并且正在计划中。

我的问题是:

  1. 在有效性方面,我在课堂上工作时能指出什么?

  2. 如果我有几个使用该类的私有函数...我应该在这些函数中取消引用之前检查nullptr,还是可以假设指针指向一个有效的对象这个类是构造的(如果这是本机C ++,我只是将指针作为一个实际的对象来使它消失)?

  3. 执行此操作的更好方法是不涉及为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;
        }
    }
    

1 个答案:

答案 0 :(得分:0)

不,你不需要每次都检查它,因为契约(和C ++的规则)暗示对象将始终存在于你可以尝试以有效方式访问它的任何点。

如果可以重新分配,并且您处于多线程环境中,则可能需要锁定对它的访问权限。这将是我能想到的唯一问题。