我认为虚拟一般就足够了.
有没有其他理由使它成为纯虚拟而不是强制派生类来实现自己的析构函数?我的意思是如果你在你的类的构造函数中分配一些东西,你应该强制你自己的析构函数 - 如果你的类是派生的.
不算作我已经知道的答案:如果你想让你的类抽象而且它没有纯虚函数 - 把它留给析构函数.
还有一些用途吗?
我一直以为......
...并且感到困惑,因为有时人们只是不关心差异.
关于新/删除:它们是否超载或被覆盖?
一个主意:
任何更正/建议/异议?并随意标记"hairplitting"的问题......
问题的背景:
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++ ×2
arrays ×1
c ×1
destructor ×1
macros ×1
new-operator ×1
overloading ×1
overriding ×1
pure-virtual ×1