C++:指针和抽象数组类

标签 c++ pointers abstract-class

我对指针比较陌生,写了这个合并函数。这是指针的有效使用吗?其次是 *two 变量,合并时不应该删除它,对吗?那将是客户的任务,而不是实现者?

VectorPQueue *VectorPQueue::merge(VectorPQueue *one, VectorPQueue *two) {
int twoSize = two->size();

if (one->size() != 0) {
    for (int i = 0; i < twoSize;i++)
    {
        one->enqueue(two->extractMin());
    }
}
return one;

交换函数是这样调用的

one->merge(one, two);

将这两个对象传递给它进行合并

PQueue *one = PQueue::createPQueue(PQueue::UnsortedVector);
PQueue *two = PQueue::createPQueue(PQueue::UnsortedVector);

最佳答案

在你的情况下,指针是完全没有必要的。您可以简单地使用引用。

也没有必要传入调用成员函数的参数。您可以使用 this 指针获取调用成员函数的对象。

/// Merge this with other.
void VectorPQueue::merge(VectorPQueue& other) {
  // impl
}

总的来说:通过继承实现容器并不是真正的首选方式。查看标准库以及它如何实现序列抽象(迭代器)。

关于C++:指针和抽象数组类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285726/

相关文章:

检查函数中的指针地址和值

java - 当当前类已经扩展了另一个类时实现抽象类的方法

java - 如何对抽象类进行单元测试 : extend with stubs?

c++ - 找不到用户定义的整数文字

python - 在 Python 中传递指向列表的指针

c++ - 将 Boost MultiArray (2d) 转换为普通二维数组的最简单方法是什么?

c++ - 更改 LinkedList 以接受对象而不是 Int?

java - 如何使用非抽象类实现 ActionListener? java

c++ - 作为 winAPI 回调的类方法

c++ - 尝试用 C++ 实现一个基本类