c++子类可以继承父类的方法吗
答案:3 悬赏:10 手机版
解决时间 2021-11-16 08:18
- 提问者网友:战魂
- 2021-11-15 13:58
c++子类可以继承父类的方法吗
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-11-15 14:17
可以,只要父类的方法限定符不是 private 就行
class CClassA
{
private:
int AAA()
{
//父类私有方法
return 0;
}
protected:
int BBB()
{
///父类保护方法
return 0;
}
public:
int CCC()
{
this->AAA();//没问题
this->BBB();//没问题
//父类公有方法
return 0;
}
virtual int DDD()
{
//父类虚方法
return 0;
}
};
class CClassB :public CClassA
{
public:
void EEE()
{
//this->AAA();//该私有方法无法调用,因为没有被继承
this->BBB();//合法
this->CCC();//合法
}
virtual int DDD()
{
//重写
return 1;
}
};
int main()
{
CClassA* B = new CClassB();
B->DDD();//实际调用 CClassB 的DDD函数
//B->AAA();//不可访问
//B->BBB();//不可访问
B->CCC();//这个是父类的CCC方法
CClassB* BB = (CClassB*)B;
BB->EEE();
BB->CCC();
BB->DDD();
system("pause");
return 0;
}写点代码演示一下就行了
class CClassA
{
private:
int AAA()
{
//父类私有方法
return 0;
}
protected:
int BBB()
{
///父类保护方法
return 0;
}
public:
int CCC()
{
this->AAA();//没问题
this->BBB();//没问题
//父类公有方法
return 0;
}
virtual int DDD()
{
//父类虚方法
return 0;
}
};
class CClassB :public CClassA
{
public:
void EEE()
{
//this->AAA();//该私有方法无法调用,因为没有被继承
this->BBB();//合法
this->CCC();//合法
}
virtual int DDD()
{
//重写
return 1;
}
};
int main()
{
CClassA* B = new CClassB();
B->DDD();//实际调用 CClassB 的DDD函数
//B->AAA();//不可访问
//B->BBB();//不可访问
B->CCC();//这个是父类的CCC方法
CClassB* BB = (CClassB*)B;
BB->EEE();
BB->CCC();
BB->DDD();
system("pause");
return 0;
}写点代码演示一下就行了
全部回答
- 1楼网友:轻雾山林
- 2021-11-15 14:46
可以继承,父类的函数时虚函数就可以继承。
- 2楼网友:洎扰庸人
- 2021-11-15 14:29
class CClassA
{
private:
int AAA()
{
//父类私有方法
return 0;
}
protected:
int BBB()
{
///父类保护方法
return 0;
}
public:
int CCC()
{
this->AAA();//没问题
this->BBB();//没问题
//父类公有方法
return 0;
}
virtual int DDD()
{
//父类虚方法
return 0;
}
};
class CClassB :public CClassA
{
public:
void EEE()
{
//this->AAA();//该私有方法无法调用,因为没有被继承
this->BBB();//合法
this->CCC();//合法
}
virtual int DDD()
{
//重写
return 1;
}
};
int main()
{
CClassA* B = new CClassB();
B->DDD();//实际调用 CClassB 的DDD函数
//B->AAA();//不可访问
//B->BBB();//不可访问
B->CCC();//这个是父类的CCC方法
CClassB* BB = (CClassB*)B;
BB->EEE();
BB->CCC();
BB->DDD();
system("pause");
return 0;
}
{
private:
int AAA()
{
//父类私有方法
return 0;
}
protected:
int BBB()
{
///父类保护方法
return 0;
}
public:
int CCC()
{
this->AAA();//没问题
this->BBB();//没问题
//父类公有方法
return 0;
}
virtual int DDD()
{
//父类虚方法
return 0;
}
};
class CClassB :public CClassA
{
public:
void EEE()
{
//this->AAA();//该私有方法无法调用,因为没有被继承
this->BBB();//合法
this->CCC();//合法
}
virtual int DDD()
{
//重写
return 1;
}
};
int main()
{
CClassA* B = new CClassB();
B->DDD();//实际调用 CClassB 的DDD函数
//B->AAA();//不可访问
//B->BBB();//不可访问
B->CCC();//这个是父类的CCC方法
CClassB* BB = (CClassB*)B;
BB->EEE();
BB->CCC();
BB->DDD();
system("pause");
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯