继承机制中的构造器和析构器

本文探讨了在继承机制中,如何在子类构造器中调用基类的带参数构造器,并指出基类的析构器会在子类执行完毕后被调用,详细解释了构造器和析构器的执行流程。
摘要由CSDN通过智能技术生成
  • 基类有个带有参数的构造器
class Animal
{
public:
	Animal(std::string theName);
	std::string name;
}
class Pig:public Animal
{
public:
	Pig(std::string theName);
}
//在构造器中定义方法
Animal::Animal(std::string theName)
    {name = theName;}
Pig::Pig(std::string theName):Animal(theName){}

  • 注意在子类的构造器定义里的“:Animal(theName)” 语法含义是:
    当调用Pig()构造器时(以theName作为输入参数时),Animal()构造器也将被调用(theName输入参数将传递给它)
  • 于是,当我们调用Pig
    pig(“小猪猪”);将把字符串“小猪猪”传递给Pig()和Animal(),赋值动作将实际发生在Animal()方法里。
    而与构造器的情况相反,基类的析构器将在子类的最后一条语句执行完毕后才被调用。
#include <iostream>
#include <string> 
using namespace std; 
class BaseClass
{public:	
    BaseClass();	
    ~ BaseClass(); 
    void doSomething();};
 class SubClass:public BaseClass
 {public:	SubClass();	~ SubClass();}; 

BaseClass::BaseClass()
{	cout << "进入基类构造器...." << endl;	cout << "我在基类构造器里边干了某些事...." << endl;} 
BaseClass:: ~ BaseClass()
{	cout << "进入基类析构器..." << endl;	cout << "我在基类析构器里边也干了某事..." << endl;}

 void BaseClass::doSomething()
 {	cout << "我干了某些事..." << endl;} 
 
SubClass::SubClass()
{	cout << "进入子类构造器..." << endl;	cout << "我在子类构造器里干了某些事... " << endl;}
 SubClass::~SubClass()
 {	cout << "进入子类析构器..." << endl;} 

int main()
{	
        SubClass subclass;	
        subclass.doSomething(); 	
        cout << "完事,收工!" << endl;  	
        return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值