我想创建一个仅阻止父类中的一个函数的类。
例如:
class basememory{
char *mem;
protected:
basememory(int size){mem=new char[size];}
public:
char read(int i){return mem[i];}
void write(int i, char a){mem[i]=a;}
};
class rom: public basememory{
public:
rom(int size, char *ch, int arr): basememory(size){
for(int i=0;i<arr;i++){
write(i, ch[i]);
}
} //burned to rom
};
class ram: public basememory{
public:
ram(int size): basememory(size){}
};
我不希望只为rom类从外部访问write()函数。
有没有一种方法可以在不更改基本内存类的情况下进行此操作?
最佳答案
您可以使用protected
或private
继承,然后公开要公开的功能:
class rom: protected basememory
{
public:
rom(int size, char *ch, int arr): basememory(size){ ..... }
using basememory::read;
// ^^^^^^^^^^^^^^^^^^^^^^
};
请注意,这意味着您不能通过引用/指针将
rom
传递给期望basememory
的函数-因为basememory
具有write
是公共的,所以如果有可能将rom
转换为引用它将绕过basememory
的访问说明符。关于c++ - 只能从继承的类中阻止一个函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30586056/