用 C 语言实现 C++ 的 继承 和 多态
2017-04-16 23:06
459 查看
用C++简单实现继承 && 多态(我用的是VS2013)
C++代码
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; //C++版 template<class T> struct A { virtual void F() { cout<<"A::F()"<<endl; } T a; }; template <class T> struct B:public A<T>//B类 公有继承 A类 { virtual void F() { cout << "B::F()" << endl; } T b; }; void testCPlusPlus() { A<int> a;//创建父类的对象 B<int> b;//创建子类对象 A<int>* p;//创建父类的指针 p= &a;// 父类的指针指向父类对象 //形成的条件:1.父类与子类要形成函数的重写(虚函数的重写)2.父类的指针或引用指向父类或子类的对象 p->F();//调用的是父类的A::F() p = (A<int>*)&b;// 父类的指针指向子类对象 p->F();//调用的是子类的B::F() } int main() { testCPlusPlus(); system("plause"); return 0; }
C++结果
C语言模拟实现C++的 继承 与 多态
C语言代码
//C语言版 typedef void(*FUNC)();//定义一个函数指针 void FA() { printf("A_::F()\n"); } void FB() { printf("B_::F()\n"); } struct A_ { FUNC F;//创建函数名 int a_; }; struct B_ { int b_; A_ a;//在B_类创建A_类的对象相当于继承了A_类的所有成员 }; void testC() { A_ a1;//创建A_类对象 B_ b1;//创建B_类对象 a1.F = FA; //(函数名就相当于一个原声指针) b1.a.F = FB; A_*p;//创建A_指针 p = &a1;//A_类指针指针指向A_类对象 p->F();//调用的是类似父类的A_::F() p=(A_*)&b1;//A_类指针指针指向B_类对象 p->F();//调用的是类似子类的B_::F() } int main() { //testCPlusPlus(); testC(); system("pause"); return 0; }
C语言结果
总结:
C语言也可以根据他的语法规则实现C++的继承与多态。相关文章推荐
- C语言模式实现C++继承和多态
- C语言模式实现C++继承和多态
- 由前序遍历和中序遍历重建二叉树和C语言模式实现C++继承和多态——题集(十四)
- C语言模式实现C++继承和多态的实例代码
- 如何实现 C 语言的继承和多态
- sogou interview ==> C 实现 C++ 封装 继承 多态
- 如何实现 C 语言的继承和多态
- 模拟继承和多态--C语言模式实现C++继承和多态
- C语言实现C++的继承和多态
- C语言实现C++的继承和多态
- C语言模拟实现C++的继承与多态
- C语言模式实现C++继承和多态
- C++对象布局及多态实现探索之虚继承
- go语言如何实现类似c++中的多态功能
- 【转】C语言实现C++面向对象的封装、继承、多态机制
- 2014 0416 word清楚项目黑点 输入矩阵 普通继承和虚继承 函数指针实现多态 强弱类型语言
- C++ 封装 继承 多态 (重点多态的实现)
- C++的封装、多态、继承在C中的对应实现方式
- C语言模拟实现C++继承和多态
- C语言模式实现C++继承和多态