我正在尝试删除此程序中继承的 char*
属性:
在啊
class A {
public :
// Functions, constructors and such
private :
char* attribute;
}
在 B.h
#include "A.h"
class B : public A {
public :
B(const char* _attribute, int s) : A(_attribute) {setSpeed(s);}
~B()
private :
int speed;
}
像这样在析构函数中使用 delete [] :
B::~B() {
delete [] attribute;
}
但是我得到这个错误:`char*A::attribute' 是私有(private)的
在 A 的析构函数 (~A()
) 中,我使用相同的“destroy [] attribute”并且它有效...
最佳答案
既然是A私有(private)的,那么A应该是负责删除它的类。
你不应该在 B 中删除它,这违反了基本封装。 B 应该只负责删除自己的属性。
关于c++ - 如何删除继承的私有(private) char* 属性? (例如 : in a destructor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134665/