源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

深入探讨C++父类子类中虚函数的应用

  • 时间:2021-09-21 02:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入探讨C++父类子类中虚函数的应用
构造函数不能是虚函数,因为在调用构造函数创建对象时,构造函数必须是确定的,所以构造函数不能是虚函数。 析构函数可以是虚函数。 [b]1.父类Father.h: [/b]
[u]复制代码[/u] 代码如下:
#pragma once class Father { public:  Father(void);  virtual ~Father(void);  virtual int getCount(); public:  int count; };
Father.cpp
[u]复制代码[/u] 代码如下:
#include "StdAfx.h" #include "Father.h" #include <iostream> using namespace std; Father::Father(void) {  count = 1;  cout<<"Father is called. count = "<<count<<endl; } Father::~Father(void) {  cout<<"~Father is called."<<endl; } int Father::getCount() {  cout<<"Father::getCount() count = "<<count<<endl;  return count; }
[b]2.子类Child.h: [/b]
[u]复制代码[/u] 代码如下:
#pragma once #include "father.h" class Child :  public Father { public:  Child(void);  virtual ~Child(void);  virtual int getCount();  int getAge(); public:  int age; };
Child.cpp
[u]复制代码[/u] 代码如下:
#include "StdAfx.h" #include "Child.h" #include <iostream> using namespace std; Child::Child(void) {  count = 2;  age = 20;  cout<<"Child is called. count = "<<count<<", age = "<<age<<endl; } Child::~Child(void) {  cout<<"~Child is called."<<endl; } int Child::getCount() {  cout<<"Child::getCount() count = "<<count<<endl;  return count; } int Child::getAge() {  cout<<"Child::getAge() age = "<<age<<endl;  return age; }
[b]3.测试类Test.cpp [/b]
[u]复制代码[/u] 代码如下:
#include "stdafx.h" #include  <cstdlib> #include <iostream> #include "Child.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) {  Father *father1 = new Father();  cout<<"father1 count = "<<father1->getCount()<<endl;  delete father1;  cout<<"************** father1 end *****************"<<endl<<endl;  Father *father2 = new Child();  cout<<"father2 count = "<<father2->getCount()<<endl; // father2 don't have getAge() method  delete father2;  cout<<"************** father2 end *****************"<<endl<<endl;  Child *child = new Child();  cout<<"child count = "<<child->getCount()<<endl;  cout<<"child age = "<<child->getAge()<<endl;  delete child;  cout<<"************** child end *****************"<<endl<<endl;  getchar();  return 0; }
[b]4.输出结果: [/b]Father is called. count = 1 Father::getCount() count = 1 father1 count = 1 ~Father is called. ************** father1 end ***************** Father is called. count = 1 Child is called. count = 2, age = 20 Child::getCount() count = 2 father2 count = 2 ~Child is called. ~Father is called. ************** father2 end ***************** Father is called. count = 1 Child is called. count = 2, age = 20 Child::getCount() count = 2 child count = 2 Child::getAge() age = 20 child age = 20 ~Child is called. ~Father is called. ************** child end *****************
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部