小编spc*_*mrn的帖子

抽象类的析构函数应该是纯虚拟的吗?

我认为虚拟一般就足够了.

有没有其他理由使它成为纯虚拟而不是强制派生类来实现自己的析构函数?我的意思是如果你在你的类的构造函数中分配一些东西,你应该强制你自己的析构函数 - 如果你的类是派生的.

不算作我已经知道的答案:如果你想让你的类抽象而且它没有纯虚函数 - 把它留给析构函数.

还有一些用途吗?

c++ abstract-class destructor pure-virtual

14
推荐指数
2
解决办法
6327
查看次数

新/删除"覆盖"与"过载"

我一直以为......

  • 重写意味着重新实现基类中的函数(相同的签名),而
  • 重载意味着实现具有相同名称但不同签名的函数

...并且感到困惑,因为有时人们只是不关心差异.

关于新/删除:它们是否超载或被覆盖?

一个主意:

  • 在Class = overload中实现new/delete运算符
  • 重新实现全局new/delete = override

任何更正/建议/异议?并随意标记"hairplitting"的问题......

c++ overriding overloading new-operator delete-operator

5
推荐指数
1
解决办法
1239
查看次数

通过宏进行C数组初始化

问题的背景:
void dash(int *n, char c)绘制用'+'分隔的字符c。
参数n是一个整数数组,例如{1、3、2}和'-'表示c应为“ +-+ --- +-+”,这很好用。为了使用破折号,我这样做了{int f={1, 3, 2}; dash(f, '-');},这使得构造可以复制和粘贴。

问题本身:
为了避免我想做的复制粘贴操作#define F(X, Y) {int f=X; dash(f, Y);},使用起来很不错F({1, 3, 2}, '-')
不幸的是,编译器抱怨F获取了4个(数组的长度+ 1)参数,而不是2个参数。

那么,如何给{1, 3, 2}宏作为参数呢?

c arrays macros

3
推荐指数
1
解决办法
8678
查看次数