Size: a a a

IT KPI C/C++ ХВ (не UB)

2021 April 10

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Что значит нельзя перегрузить конструктор
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Конечно можно, аргументы то разные
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Название то же, вот и перегрузка
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Деструктор перегрузить нельзя, да
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Потому что компилятору над понимать чё вызывать во время удаления
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Через шаблоны деструктор не перегружается
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Шаблоны вообще не код. В лучшем случае ты создашь два разных класса, и два разных деструктора соответственно
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Это не перегрузка
источник

DK

David Kravets in IT KPI C/C++ ХВ (не UB)
#include <iostream>

using namespace std;

template <class my>
class myclass
{
public:
~myclass();
};

template<>
myclass<int>::~myclass()
{

};

template<>
myclass<string>::~myclass()
{
cout << "string";
};

int main(int argc, char *argv[])
{
источник

DK

David Kravets in IT KPI C/C++ ХВ (не UB)
Деструктор определяется по типу
источник

VD

Vlad Doc in IT KPI C/C++ ХВ (не UB)
У тебя два разных класса же
источник

DK

David Kravets in IT KPI C/C++ ХВ (не UB)
Да там ничего такого нет, просто экземпляр создаётся при вызове
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Это разные классы
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
создай статичное поле тогда, внутри класса)
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
поставь его значение в my_class<int>::static_field =2;
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
а потом проверь в my_class<std::string>::static_field
источник

DK

David Kravets in IT KPI C/C++ ХВ (не UB)
При объявлении класса создаётся класс типа инт и деструктор будет вызван для инта
источник

DK

David Kravets in IT KPI C/C++ ХВ (не UB)
Понятно что это не прямая перегрузка
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
это то же самое, что сделать так
struct A
{
int n;
~A() { foo(); }
}

struct B
{
std::string n;
~B() { foo2(); }
}
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
такая же перегрузка :D
источник