C++中的继承与多态

来源:互联网 发布:php rides 缓存 编辑:程序博客网 时间:2024/06/15 02:55

C++中,多态性仅用于通过继承而相关联的类型的引用或指针,继承一般使用非虚函数,多态一般使用虚函数

C++的函数调用默认不使用动态绑定,要触发动态绑定,必须满足两个条件:

1. 只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不能进行动态绑定;

2. 必须通过基类类型的额引用或指针金鑫函数调用。

以上摘录自:《C++ primer》

下面实际代码如下:

//头文件#pragma onceclass 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;}

输出结果为:


0 0
原创粉丝点击