首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多态性和STL containers...are指针是否不必要?

多态性和STL containers...are指针是否不必要?
EN

Stack Overflow用户
提问于 2017-11-17 02:07:40
回答 1查看 129关注 0票数 1

我在前面的软件工程堆栈交换中遇到了这个问题和答案。问题是,"Why are pointers not recommended when coding with c++?"。排名最高的答案提供了两点,第二个是令人感兴趣的。它指出:

在C++中大多数指针的使用都是不必要的.

他的规范有些冗长,但作者在其中指出,"...modern C++成语通常根本不需要指针“。

首先要记住的是STL容器中的多态性。在C++中,在没有使用指针的情况下,这是怎么可能的呢?

经过一些研究,this是我所能发现的全部(剧透:没有帮助)。

EN

回答 1

Stack Overflow用户

发布于 2017-11-17 04:15:12

这是可能的,至少在C++11,但国际海事组织,一个坏主意:

代码语言:javascript
复制
#include <vector>
#include <iostream>
#include <functional>

namespace
{
struct A
{
  virtual void operator()(void) { std::cout << "in A" << std::endl; }
};

struct B : public A
{
  virtual void operator()(void) { std::cout << "in B" << std::endl; }
};
}

int main(void)
{
  A a;
  B b;
  std::vector<std::reference_wrapper<A>> v;
  v.push_back(a);
  v.push_back(b);
  v[0]();
  v[1]();
  return 0;
}

我同意上述意见。当您需要在容器中执行动态多态时使用智能指针。他们工作得很好。当指针包装在智能指针中时,指针并不坏。警告:在上面,您必须确保a和b至少存在于该向量,否则引用就会变成未定义的(上面的代码是坏的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47342220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档