/* * Copyright (c) 2021-2022, Erich Styger * * SPDX-License-Identifier: BSD-3-Clause */ #include "car.hh" #include // for exit() class Car { private: int price; public: Car(void) { // constructor price = 1000; } ~Car(void) { // destructor price = -1; } void SetPrice(int price) { // setter method this->price = price; } }; // global variables static Car c; // global object, shall be initialized by startup (constructor) static int i; // initialized by startup (zero-out) static int j = 0x1234; // initialized by startup (copy-down) void CAR_Test(void) { Car newCar; // local object: constructor called? c.SetPrice(i+1000); newCar.SetPrice(j); // destructors of newCar called? } extern "C" { extern void __libc_fini_array(void); } void CAR_Exit(void) { // __libc_fini_array(); exit(-1); // force application exit, global destructors called? }