什么是c ++指针的示例用法?

mon*_*sto 3 c++ pointers

我是自学c ++,我得到了指针的工作方式.但我正在使用的文档是非常文字的,并且示例并没有真正说明为什么或何时使用指针.一些现实世界的例子可以帮助我保留知识.

Mar*_*ram 9

当您希望对象存在的时间长于当前堆栈时,可以使用指针.您还可以使用它们来避免将对象复制到容器中.

// TODO: Remember to call DeleteObjects() when you're done here!!
std::vector<MyObject*> Objects;

void Test()
{
    MyObject *const pObject = new MyObject();
    Objects.push_back(pObject);
}

void DeleteObjects()
{
    std::vector<MyObject*>::iterator it = Objects.begin(), itEnd = Objects.end();
    for (; it != itEnd; ++it)
    {
        delete *it;
    }
    Objects.clear();
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,与此简单示例相反,您应该很少处理引用动态分配对象的"裸"指针.(Mark的例子是关于谁负责释放放入该容器的对象的重要问题.)作为所有资源,动态分配的对象应该由专门用于此任务的良好实现的类型来管理.标准库(字符串和其他容器)中有许多这些类很容易获得.如果您的特定用例不存在任何内容,则总会有智能指针. (5认同)