中国建设企业银行登录网站,wordpress运行php文件下载,怎么制作个人网站,安徽湖滨建设集团网站创作不易#xff0c;本篇文章如果帮助到了你#xff0c;还请点赞 关注支持一下♡#x16966;)!! 主页专栏有更多知识#xff0c;如有疑问欢迎大家指正讨论#xff0c;共同进步#xff01; #x1f525;c系列专栏#xff1a;C/C零基础到精通 #x1f525; 给大… 创作不易本篇文章如果帮助到了你还请点赞 关注支持一下♡)!! 主页专栏有更多知识如有疑问欢迎大家指正讨论共同进步 c系列专栏C/C零基础到精通 给大家跳段街舞感谢支持ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ c语言内容
专栏c语言之路重点知识整合
【c语言】全部知识点总结 目录 一、隐藏二、父类指针指向子类对象 一、隐藏
在同一个类中两个只有参数列表不同同名同返回类型的函数能构成函数重载我们调用的时候可以根据参数类型、参数个数编译器自动匹配调用哪个函数。
例如
class CTest
{void fun();void fun(int a);void fun(char a);
}如果在父类和子类中出现同名函数由于在不同的类中即不同的作用域即使函数的参数列表不同也不能构成函数重载
这种情况称为隐藏 C中当一个派生类定义了一个和基类同名的成员函数时基类的同名函数会被隐藏这种现象称为隐藏 #include iostream
using namespace std;
class CFather
{
public:void fun(){cout CFather::fun() endl;}
};
class CSon :public CFather
{
public:void fun(){cout CSon::fun() endl;}
};
int main()
{CSon test; test.fun(); //不是函数重载(不是同一个作用域) 自动匹配子类 不能匹配父类//隐藏 隐藏子类定义了和父类同名的成员称之为隐藏return 0;
}运行发现子类对象调用函数时自动调用了子类中的fun()函数 在隐藏下如果不使用类名作用域指定在子类对象调用函数时编译器会自动调用子类中的同名函数 二、父类指针指向子类对象
在继承的条件下父类的指针可以不通过强转指向子类对象 CSon son;CFather* const pthis son; //在继承的条件下父类的指针可以不通过强转直接指向子类对象pthis-fun();反过来却不行 CFather fa;CSon* pson fa; //error:子类的指针不能指向父类的对象由于父类指针可以指向子类对象父类指针就可以直接调用子类中的成员函数
父类的指针可以统一多个类的类型提高代码的复用性、扩展性 例如
CSheep和CPig和CDog类继承CPet通过父类指针统一管理三种子类对象
使用一个父类指针调用共有的方法即可省下大量重复代码
#include iostream
#include string
using namespace std;
class CPet
{
public:int m_weight;void walk(){cout 散步 endl;}CPet(){m_weight 20;}
};
class CSheep:public CPet
{
public:void like(){cout 喜欢吃草 endl;}
};
class CPig :public CPet
{
public:void like(){cout 喜欢胡萝卜 endl;}
};
class CDog :public CPet
{
public:void like(){cout 喜欢骨头 endl;}
};//void fun(CSheep* pCS)
//{
// cout 体重 pCS-m_weight endl;
// CS-like();
// CS-walk();
//}
//void fun(CPig* pCP)
//{
// cout 体重 pCP-m_weight endl;
// CP-like();
// CP-walk();
//}
//void fun(CDog* pCD)
//{
// cout 体重 pCD-m_weight endl;
// CD-like();
// CD-walk();
//}
void fun(CPet *pCPet) //父类的指针可以统一多种子类类型减少代码的冗余提高程序复用性、扩展性
{cout 体重 pCPet-m_weight endl;//pCPet-like(); //父类的指针只能使用父类的成员不能使用子类的成员 pCPet-walk();
}int main()
{fun(new CSheep);fun(new CPig);fun(new CDog);void (CPet:: * p_CS)() (void (CPet::*)()) CSheep::like;CPet pet;(pet.*p_CS)();return 0;
}也将实现C的多态… 大家的点赞、收藏、关注将是我更新的最大动力 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大我会继续不断努力提供有价值的内容如果本文哪里有错误的地方还请大家多多指出(●◡●)