【TOJ 5254】C++实验:继承中的构造函数和析构函数

描述

实现C++类Base和Derived,并编写相关构造函数和析构函数,使其能够输出样例信息。

主函数里的代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

int main()
{
	Base *p = new Derived(1, 2);
	delete p;
	Base b;
	Derived d;
	return 0;
}

输入

输出

输出样例信息。

样例输入

样例输出

Base Constructor 1
Derived Constructor 2
Derived Destructor 2
Base Destructor 1
Base Constructor 0
Base Constructor 0
Derived Constructor 0
Derived Destructor 0
Base Destructor 0
Base Destructor 0

#include<iostream>
using namespace std;
class Base{
    public:
        int x;
        Base(int a=0):x(a)
        {
            x=a;
            cout<<"Base Constructor "<<x<<endl;
        }
        virtual~Base(){cout<<"Base Destructor "<<x<<endl;}
};
class Derived:public Base{
    public:
        int y;
        Derived(int a=0,int b=0):Base(a),y(b)
        {
            cout<<"Derived Constructor "<<y<<endl;
        }
        ~Derived()
        {
            cout<<"Derived Destructor "<<y<<endl;
        }
};
int main()
{
    Base *p = new Derived(1, 2);
    delete p;
    Base b;
    Derived d;
    return 0;
}

原文地址:https://www.cnblogs.com/kannyi/p/8999466.html

时间: 2025-01-06 01:44:44

【TOJ 5254】C++实验:继承中的构造函数和析构函数的相关文章

(C++)C++类继承中的构造函数和析构函数

思想: 在C++的类继承中, 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推: 析构对象时,其顺序正好与构造相反: 例子: #include <iostream> using namespace std; class Shape{ public: void Draw() {cout<<"Base::Draw()"<<endl;} void Erase() {cout<<"Base::Erase()

继承中的构造函数

构造函数的作用:初始化对象, 继承的两个特性:单根性,和传递性. 一:一个类中可以存在多个构造函数,他们实现一个重载关系.构造函数之间会造成冗余的情况. 列如: 解决办法就是用this来解决冗余问题. this 有两个作用:1.表示当前类的对象.2.解决本类中出现的冗余问题. 二:继承中构造函数. 继承:即子类(派生类)继承父类(基类)的属性和方法,在这个过程中发生的过程: 1.为子类实例化对象时,系统会默认为父类实例化对象,(默认调用的是空构造函数)调用父类的属性和方法,然后才实例化子类对象.

JAVA继承中的构造函数

ps:因为顺口...我喜欢把方法称为函数 1) 一个单独的类,如果没有声明任何构造函数,那么系统会自动生成一个无参的构造函数,此时,new classA() 不会报错. ! 如果显式声明了一个有参构造函数,再使用 new classA(无参) 将会报错,因为在已有情况下系统不会帮助生成无参构造,建议自己添加一个无参构造函数 ---一个类的构造函数只会有三种状况:无参    /   无参+有参    /   有参 2) 如果存在继承关系,假设classB extends classA , 子类的所

python中的构造函数和析构函数

python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里面.如下程序: 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间. 待深入……………………

php中的构造函数与析构函数(魔术方法)

PHP面向对象--构造函数.析构函数 __construct.__destruct__construct 构造方法,当一个对象创建时调用此方法,使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称__destruct 析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法默认情况下,PHP仅仅释放对象属性所占用的内存并销毁对象相关的资源.析构函数允许你在使用一个对象之后执行任意代码来清除内存.当PHP决定

c++中的构造函数和析构函数

构造函数:  C++提供了构造函数(constructor)来处理对象的初始化.在建立对象时自动执行.构造函数的名字必须与类名同名,它不具有任何类型,不返回任何值. 构造函数总结: ①构造函数是C++中用于初始化对象状态的特殊函数. ② 构造函数在对象创建时自动被调用(默认调用),隐身调用. ③构造函数和普通成员函数都遵循重载规则. ④拷贝构造函数是对象正确初始化的重要保证,必要的时候,必须手工编写拷贝构造函数. 构造函数的调用: 自动调用:一般情况下C++编译器会自动调用构造函数 手动调用:在

类继承时,构造函数和析构函数的调用次序

比如,apple类是fruit类的子类,当执行apple a("红富士");的时候,将先调用fruit类的构造函数,再调用apple类的构造函数 同理,假设在程序里先后声明了两个apple实例: apple a(“红富士"); apple b("青香蕉"); 当函数退出时,要先销毁b,再销毁a(因为b在栈顶). 而调用析构函数时,先调用apple的析构函数,再调用fruit的析构函数. 综上可见,构造函数和析构函数的调用次序恰好反了个个儿. Java和C+

C++中的 构造函数和析构函数

构造函数和析构函数,这两个函数将会被编译器自动调用,构造函数完成对象的初始化动作,析构函数在对象结束的时候完成清理工作. 注意:对象的初始化和清理工作是编译器强制我们要做的事情,即使你不提供初始化操作和清理操作,编译器也会给你增加默认的操作,只是这个默认初始化操作不会做任何事. 构造函数:实例化对象的时候系统自动调用 析构函数:对象释放的时候系统自动调用 构造函数语法: 构造函数函数名和类名相同,没有返回类型,连void都不可以,但可以有参数,可以重载 析构函数语法: 析构函数函数名是在类名前面

虚基类 继承中的构造函数

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月1日 *版 本 号:v1.0 */ #include <iostream> using namespace std; class Base { public: Base(char i) { cout<<"Base constructor. --"<<i<<