C++ 实例 VS 指针 VS 引用

标签 c++ pointers reference instance

我有一个程序可以创建我自己的类的许多实例。然后我操作它们:读取、更改、将它们传递给一些第三方方法等。

一共有三个问题。

  1. 我存储的是实例 vector 还是指针 vector ?为什么?

  2. 如果我不想更改实例,我是否将实例或指向它的指针传递给函数?为什么?

  3. 如果我确实想要更改一个实例,我是传递指针还是引用?为什么?

提前致谢!

类示例:

class Player {
    public:
        static const char               width = 35;
        static const char               height = 5;
        static const char               speed = 15;

        int                             socketFD;
        float                           xMin;
        float                           xMax;

        char                            status;
        float                           x;
        float                           y;
        char                            direction;

                                        Player ( int );
        void                            Reset();
        void                            Move();
        void                            SetHost();
        void                            SetClient();

    private:
        void                            EscapeCheck();
};

最佳答案

Do I store an array of instances or an array of pointers? Why?

如果 Class 是一个基类,并且您想防止对象切片,您可以存储指针。否则,对象。

If i do not want to change an instance do I pass to the function an instances or pointers to it? Why?

如果按值传递,则不会修改原始对象,因为您正在处理拷贝。如果传递指针或引用,则将其标记为常量:

void foo ( MyClass const* );
void foo ( MyClass const& );

If i do want to change an instance, do i pass a pointer or a reference? Why?

要么。我个人更喜欢引用,指针与动态分配的联系更紧密。

现在经常使用 RAII,因此一个很好的替代方法是使用智能指针。

关于C++ 实例 VS 指针 VS 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11897094/

相关文章:

pointers - Golang 中无效的内存地址

c++ - std::iterator::reference 必须是引用吗?

c++ - std::vector<std::vector<type>> 用于稀疏矩阵结构或其他?

c++ - 如何将消息发送到接收期间找到的SCTP关联?

谁能帮我理解这个 strchr() C 段错误?

ruby-on-rails - Ruby on Rails 基本概念总结

c++ - 声明对 Ints 数组的引用时,为什么它必须是对 const 指针的引用?

c++ - 内存区域和内存分配器有什么区别?

C++ 成员函数与自由函数

c++ - 自定义 C++ 渲染系统中的性能比较。为不同的类调用渲染函数