我主要使用Java和泛型相对较新.我一直在阅读Java做出错误决定或者.NET有更好的实现等.
那么,泛型中C++,C#,Java之间的主要区别是什么?每个人的利弊?
组件驱动开发术语开始被广泛使用,尤其是 与控制反转有关.
在http://www.stepanovpapers.com/notes.pdf中,Alexander Stepanov提到:
有趣的是,STL中保留的唯一继承示例继承自空类.最初,在容器甚至迭代器中有许多继承用途,但由于它们引起的问题,它们必须被删除.
哪些技术问题妨碍了在STL中使用继承?
我已经开始使用C++进行编码,来自Java背景(实际上我在我的大学学过C++,但我们从未进入过STL等)
无论如何,我已经到了我在各种集合中安排数据的地步,我立即告诉自己"好吧,这是一种Set;这是一个List或一个ArrayList;这是地图等" 在Java中,我只想让我正在编写的任何类实现Set或Map或List接口; 但我可能不会继续继承ArrayList或HashSet,或者什么不是,那里的实现有一些参与,我不想搞砸它们.
现在,我在C++中做什么(使用标准库)?似乎没有集合,映射,列表等的抽象基类 - 相当于Java接口; 另一方面,标准容器的实现看起来非常可怕.好吧,也许他们一旦你了解它们就不那么可怕了,但是假设我只是想写一些类似于在C++中扩展AbstractSet的非虚拟类?我可以传递给任何需要Set的函数吗?我应该怎么做呢?
只是为了澄清 - 我不一定想做Java中的常见做法.但是,另一方面,如果我有一个对象,从概念上讲,它是一种集合,我想继承适当的东西,免费获得默认实现,并由我的IDE指导实现我应该实现的那些方法.
我正在尝试用 C++ 创建一个双向链表,并且我正在尝试正确执行它。因此,我认为我应该遵守任何“官方”C++ 指南推荐的任何接口结构,例如接口。在Java中,有这样的接口,可以免费使用,并且标准化抽象数据类型(例如https://docs.oracle.com/javase/8/docs/api/java/util/List.html) 。
我的问题:C++中有类似的东西吗?Startpageing 找到了我这个链接:
https://en.cppreference.com/w/cpp/container/list
但它似乎没有使用任何继承。
c++ ×4
inheritance ×3
java ×3
stl ×2
c# ×1
components ×1
containers ×1
generics ×1
interface ×1
paradigms ×1
templates ×1