当前位置: 首页 > 编程笔记 >

C++聚合关系类的构造函数的调用顺序详解

郏稳
2023-03-14
本文向大家介绍C++聚合关系类的构造函数的调用顺序详解,包括了C++聚合关系类的构造函数的调用顺序详解的使用技巧和注意事项,需要的朋友参考一下

如图,表示一个聚合关系

下面就用简单的代码来实现

#pragma once
class Engine
{
public:
  Engine();
  ~Engine();
};
Engine.h
#include <iostream>
#include "Engine.h"
using namespace std;

Engine::Engine()
{
  cout << "调用构造函数:Engine()" << endl;
}

Engine::~Engine()
{
  cout << "调用析构函数:~Engine()" << endl;
}
Engine.cpp
#pragma once
#include "Engine.h"

class Car
{
public:
  Car();
  ~Car();
private:
  Engine m_eCar;
};
Car.h
#include <iostream>
#include "Car.h"
using namespace std;

Car::Car()
{
  cout << "调用构造函数:Car()" << endl;
}

Car::~Car()
{
  cout << "调用析构函数:~Car()" << endl;
}
Car.cpp

由此可以看出,对象的构造函数调用的顺序就好像我们造车子一样,先打造好引擎和其他部件才能拼装好汽车,析构函数的调用就和拆开汽车一样,先扒开最外面的,然后再扒里面的。

以上这篇C++聚合关系类的构造函数的调用顺序详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍C++中构造函数与析构函数的调用顺序详解,包括了C++中构造函数与析构函数的调用顺序详解的使用技巧和注意事项,需要的朋友参考一下 前言 在使用构造函数和析构函数时,需要特别注意对它们的调用时间和调用顺序。在一般情况下,调用析构函数的次序正好与调用构造函数的次序相反:最先被调用的构造函数,其对应的(同一对象中的)析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。

  • 本文向大家介绍C++构造函数初始化顺序详解,包括了C++构造函数初始化顺序详解的使用技巧和注意事项,需要的朋友参考一下 1.构造函数、析构函数与拷贝构造函数介绍 构造函数 1.构造函数不能有返回值 2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 3.创建一个对象时,系统自动调用构造函数 析构函数 1.析构函数没有参数,也没有返回值。不能重载

  • 本文向大家介绍C++ 类的构造函数详解及实例,包括了C++ 类的构造函数详解及实例的使用技巧和注意事项,需要的朋友参考一下 C++ 类的构造函数 默认构造函数 如果你定义一个类,并且没有给它定义构造函数。编译器会为这个类提供默认的构造函数。如果你提供了构造函数,编译器是不会再为你提供一个默认构造函数的。编译器提供的默认构造函数什么都没做。类的成员变量将遵守默认的初始化规则。 编译器提供的默认构造函

  • 问题内容: //: c07:Sandwich.java // Order of constructor calls. // package c07; // import com.bruceeckel.simpletest.*; 此代码的输出是 由于类中的字段是按照声明的顺序创建的,为什么不这样做 在上面列表的顶部? 另外,在此代码中它打算做什么? 起初我以为这是一个匿名类,但看起来并不像它。它正在

  • C++ 类 & 对象 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念:#include <iostream> using namespace std; class Line { public: v

  • 为什么下面没有编译: 如有需要,请提供更多详细信息: 我想将tmp传递给父构造函数