/*
在销毁某个对象时,基类的析构器也将被自动调用,
但这些事情编译器会自动替你处理
因为析构器不需要输入参数,
所以根本用不着使用:SuperClassMethod(arguments)
语法
构造器第一执行
与构造器情况相反,基类的析构器
将在子类的最后一条语句执行完毕之后才会被调用
*/
//example 1
//#include <iostream>
//#include <string>
//
基类
//class Animal
//{
// public:
// std::string mouth;
// std::string name;
// //加入构造器
// Animal(std::string theName);
//
// void eat();
// void sleep();
// void drool();
//};
//
构造器使用
//Animal::Animal(std::string theName)
//{
// name=theName;
//}
子类
//class Pig:public Animal
//{
// public:
// void climb();
// Pig(std::string theName);
//};
//
构造器继承
//Pig::Pig(std::string theName):Animal(theName)
//{
//
//}
//
//class Turtle:public Animal
//{
// public:
// void swim();
// Turtle(std::string theName);
//};
//
构造器继承
//Turtle::Turtle(std::string theName):Animal(theName)
//{
//
//}
//void Animal::eat()
//{
// std::cout << "I'm eatting!" <<std::endl;
//}
//
//void Animal::sleep()
//{
// std::cout << "I'm sleeping! Don't disturb me!" << std::endl;
//}
//
//void Animal::drool()
//{
// std::cout << "我在流口水"<<std::endl;
//}
//
//void Pig::climb()
//{
// std::cout << "我在爬树我是猪" <<std::endl;
//}
//
//void Turtle::swim()
//{
// std::cout << "我在游泳我是乌龟" <<std::endl;
//}
//
//int main()
//{
// Pig pig("小猪猪");
// Turtle turtle("小甲鱼");
//
// std::cout << pig.name <<std::endl;
// std::cout << turtle.name <<std::endl;
// pig.eat();
// turtle.eat();
// pig.climb();
// turtle.swim();
// return 0;
//}
//example 2
#include <iostream>
#include <string>
//基类
class BaseClass
{
public:
//构造器
BaseClass();
//析构器
~BaseClass();
//方法
void doSomething();
};
//子类:继承基类
class SubClass:public BaseClass
{
public:
//构造器
SubClass();
//析构器
~SubClass();
};
//基类构造器定义
BaseClass::BaseClass()
{
std::cout<<"进入基类构造器\n";
std::cout<<"我在基类构造器干了某些事\n";
}
//基类析构器定义
BaseClass::~BaseClass()
{
std::cout<<"进入基类析构器\n";
std::cout<<"我在基类析构器中也干了某些事\n";
}
//基类方法
void BaseClass::doSomething()
{
std::cout<<"我干了某些事\n";
}
//子类构造器定义
SubClass::SubClass()
{
std::cout<<"进入子类构造器\n";
std::cout<<"我在子类构造器中还干了某些事\n";
}
//子类析构器定义
SubClass::~SubClass()
{
std::cout<<"进入子类析构器\n";
std::cout<<"我在子类析构器中还干了某些事\n";
}
//主函数
int main()
{
//子类声明
SubClass subclass;
subclass.doSomething();
std::cout<<"完事,收工\n";
return 0;
}
//查看执行顺序
C++ 继承机制中的构造器和析构器
猜你喜欢
转载自blog.csdn.net/qq_48167493/article/details/121249220
今日推荐
周排行