C语言模式实现C++继承和多态
2017-07-28 18:51
525 查看
C实现一个struct A和struct B各包含一个int成员a和b,要求达到B继承了A的效果,也就是B里面包含一个A。并且能达到多态的效果,也就是一个A*p指向A调的是A的函数,指向B调用的是B的函数
何为继承 ?
定义:在C++中所谓的继承就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类”或者“父类”,新建立的类称为“派生类”或者“子类”,一个新类从已有的类那里获得其已有特性,这种现象称为类的继承,类的继承是用已有的类来建立专用类的编程技术。
优点: a) 代码复用
b) 提高程序的可扩展性
特点: a) 传递性
b) 单根性:一个类只能有一个父类但可以有多个子类
c) 相对性:描述一个类时应该说类A相对于类B是子类或父类,而不能简单的定义类A是子类或父类
何为多态?
多态就是向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(方法);
例如:使用运算符“+”使两个数值相加,就是发送一个消息,他要调用operator+函数,实际上,整型,单精度型,双精度型的加法操作过程是互相不同的,是由不同内容的函数实现的。很明显,它们是通过不同的方法来响应同一消息。
在C++中,多态的表现形式之一是:具有不同功能的函数可以用同一个函数名,这样就可以实现用一个函数名调用不同内容的函数。总而言之,多态就是“一个接口,多种方法”。
实现多态的条件:
1:派生类重写基类虚函数
2:通过基类指针或引用调用基类虚函数(该虚函数在派生类中必须被重写)
何为继承 ?
定义:在C++中所谓的继承就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类”或者“父类”,新建立的类称为“派生类”或者“子类”,一个新类从已有的类那里获得其已有特性,这种现象称为类的继承,类的继承是用已有的类来建立专用类的编程技术。
优点: a) 代码复用
b) 提高程序的可扩展性
特点: a) 传递性
b) 单根性:一个类只能有一个父类但可以有多个子类
c) 相对性:描述一个类时应该说类A相对于类B是子类或父类,而不能简单的定义类A是子类或父类
何为多态?
多态就是向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(方法);
例如:使用运算符“+”使两个数值相加,就是发送一个消息,他要调用operator+函数,实际上,整型,单精度型,双精度型的加法操作过程是互相不同的,是由不同内容的函数实现的。很明显,它们是通过不同的方法来响应同一消息。
在C++中,多态的表现形式之一是:具有不同功能的函数可以用同一个函数名,这样就可以实现用一个函数名调用不同内容的函数。总而言之,多态就是“一个接口,多种方法”。
实现多态的条件:
1:派生类重写基类虚函数
2:通过基类指针或引用调用基类虚函数(该虚函数在派生类中必须被重写)
//c++ class base { public: virtual void fun()//虚函数 { cout << "base:;fun()" <<endl; } }; class derived :public base { public: virtual void fun() { cout << "derived::fun()" << endl; } }; void test() { base b;//基类对象 derived d;//派生类对象 base* pb = &b;//父类指针指向父类对象 pb->fun();//调用base::fun() pb = &d;//父类指针指向派生类对象 pb->fun();//调用derived::fun() }
//C typedef void(*fun)();//重定义一个函数指针类型 基类 struct base { fun b; }; 派生类 struct derived { base d;//在派生类中定义一个基类的对象即可实现对基类的继承 }; void funb() { printf("base::fun()\n"); } void fund() { printf( "derived::fun()\n"); } void test() { base _b;//基类对象 derived _d;//派生类对象 _b.b = funb;//基类对象调用基类同名函数 _d.d.b = fund;//派生类调用派生类的同名函数 base *pb = &_b;//基类指针指向基类对象 pb->b(); pb = (base *)&_d;//让基类指针指向派生类的对象,类型不同必须进行强转 pb->b(); }
相关文章推荐
- 模拟继承和多态--C语言模式实现C++继承和多态
- C语言模式实现C++继承和多态
- C语言模式实现C++继承和多态
- C语言模式实现C++继承和多态
- C语言模式实现C++继承和多态
- C语言模拟实现C++中的继承和多态
- 如何用C语言实现C++的基本特性:封装、继承、多态
- C语言模拟实现C++的继承与多态
- C语言模拟实现C++中的继承和多态
- C语言模式实现C++继承和多态的实例代码
- C语言模拟实现C++的继承多态
- C语言模拟实现C++的继承多态
- C语言实现C++的封装继承和多态
- 【转】C语言实现C++面向对象的封装、继承、多态机制
- C语言实现C++继承和多态的代码分享
- C语言模拟实现C++的继承与多态示例
- C语言模式实现C++继承和多态
- C语言实现C++的封装继承与多态
- C语言如何模拟C++实现继承和多态
- C语言模式实现C++继承和多态