Yani bu Car.hNeden C++ özel yuvalanmış sınıf için destructor çağrılmaz?
i var Car.cpp yılında#pragma once
#include<iostream>
#include<string>
using namespace std;
class Car
{
private:
int speed;
class GearBox;
GearBox& gearBox;
public:
Car();
~Car();
};
class Car::GearBox {
private:
int gear;
public:
GearBox();
~GearBox();
};
#include"Car.h"
Car::Car(): speed(0), gearBox(GearBox())
{
cout << "Car constructor" << endl;
}
Car::~Car()
{
cout << "Car destructor" << endl;
}
Car::GearBox::GearBox(): gear(0)
{
cout << "Gearbox constructor" << endl;
}
Car::GearBox::~GearBox()
{
cout << "GearBox destructor" << endl;
}
benim kodudur ve benim ana geçerli: Programın
#include"Car.h"
int main() {
{
cout << "Starting program!" << endl;
Car car;
}
system("PAUSE");
return 0;
}
Sonucu geçerli: Başlangıç programı! GearBox yapıcısı Araç yapıcı Araç yıkıcı
Neden Şanzıman yıkıcı çıktısı yapılmaz? (otomobili var iken şanzımanın bulunması gerektiğinden dolayı o şanzıman için bir referans var demektir)
MSVS kullanıyor musunuz? Eğer notu ise bir lvalue referansa geçici bağlayıcı olarak 'şanzıman (GearBox())' yasadışı olduğunu. – NathanOliver
Bu kod geçerli değil C++. Lvalue referansları, rvalues'e bağlanmaz. –
@NathanOliver evet MSVS kullanıyorum. Tamam o zaman neden program başarıyla derlendi? Ve bunu nasıl doğru yapabilirim? – Bunc