C++中的继承与多态

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

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;
}

输出结果为:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值