C++中的继承与多态
2015-05-18 13:11
211 查看
C++中,多态性仅用于通过继承而相关联的类型的引用或指针,继承一般使用非虚函数,多态一般使用虚函数。
C++的函数调用默认不使用动态绑定,要触发动态绑定,必须满足两个条件:
1. 只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不能进行动态绑定;
2. 必须通过基类类型的额引用或指针金鑫函数调用。
以上摘录自:《C++ primer》
下面实际代码如下:
输出结果为:
C++的函数调用默认不使用动态绑定,要触发动态绑定,必须满足两个条件:
1. 只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不能进行动态绑定;
2. 必须通过基类类型的额引用或指针金鑫函数调用。
以上摘录自:《C++ primer》
下面实际代码如下:
//头文件 #pragma once class Base { public: Base(void); ~Base(void); virtual void print(); void name(); protected: int data; }; //son1 继承自Base类 class son1:public Base { public: son1 (); ~son1(); void print(); void name(); };
//Base.cpp 文件 #include "Base.h" #include <iostream> Base::Base(void):data(5) { } Base::~Base(void) { } void Base::print() { std::cout<<"Base print"<<std::endl; } void Base::name() { std::cout<<"My name is Base "<<std::endl; } //son1.cpp 文件 son1::son1() { } son1::~son1() { } void son1::print() { std::cout<<"Son1 print"<<std::endl; } void son1::name() { std::cout<<"My name is Son1 "<<std::endl; }
// TemplatePattern.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "Base.h" void print_test( Base& b) { b.name(); b.print(); } int _tmain(int argc, _TCHAR* argv[]) { Base b; son1 s1; print_test(s1); s1.name(); return 0; }
输出结果为:
相关文章推荐
- 如何用C语言实现C++的基本特性:封装、继承、多态
- 继承和多态和虚函数——C++学习笔记二
- C语言模式实现C++继承和多态
- 浅谈C++非多态单继承数据布局
- C++知识点随笔(二):继承、多态
- c++继承与多态概念的简单总结
- C++内存中的封装、继承、多态(下)
- C++的三大特性:封装、继承、多态,以及多态的具体实现
- C++学习笔记--继承与多态
- C++总结笔记(一)抽象、多态、继承
- c++多态,继承,构造函数,析构函数
- C++继承(2) - 虚函数与运行时多态
- 深入剖析C++继承,多态以及隐藏(二)。(纯虚函数以及重写与隐藏)
- C++之面向对象程序设计的基本特点(抽象、封装、继承、多态)
- 用C语言实现c++的封装、继承、多态
- C++多态公有继承
- 第三周:C++组合、继承、虚函数与多态【Boolean】
- 28、不一样的C++系列--继承与多态
- 【c++知识归纳】继承与多态(一)
- C++之继承与多态