Это, вероятно, ОС и, возможно, зависит от браузера, но в Windows тип MIME для данного расширения файла можно найти, посмотрев в реестре под HKCR:
Например:
HKEY_CLASSES_ROOT.zip - ContentType
Чтобы перейти от MIME к расширению файла, вы можете посмотреть ключи в разделе
HKEY_CLASSES_ROOT \ Mime \ Database \ Content Type
] Чтобы получить расширение по умолчанию для определенного типа MIME.
Вы не можете. В C ++ есть только один деструктор на класс.
Что вы можете сделать, так это создать частный деструктор, а затем иметь несколько общедоступных методов, которые вызывают деструктор новыми и интересными способами.
class Foo {
~Foo() { ... }
public:
DestroyFoo(int) { ... };
DestroyFoo(std::string) { ... }
};
Интересный вопрос, но единственная причина, по которой вы захотите перегрузить деструктор, заключается в том, что вы хотите освободить какой-то ресурс в одном деструкторе и оставить его в другом, верно?
По сути, вы можете добиться такого поведения из своего собственного деструктора, используя дополнительное логическое значение, которое сообщит вам, следует ли освобождать конкретный ресурс или нет. Это логическое значение будет установлено в вашем конструкторе и / или в одном из ваших других методов, и в вашем деструкторе вы проверяете, установлен ли он. Если он не установлен, вы освободите ресурс. В противном случае вы просто покинете ресурс и, вероятно, его освободит какая-то другая задача. (Это имеет смысл, когда вы разделяете ресурсы между несколькими объектами.)
Причина, по которой вы не можете перегрузить деструктор, заключается в том, что ваш код не будет Я не знаю, какой деструктор нужно вызывать при уничтожении объекта. Если вы плохо называете деструкторы, но тогда вы плохо себя ведете! ; -)
Вы не можете! У каждого класса может быть только один деструктор. Как у вас могло быть больше одного? Деструктор запускается автоматически; язык никак не знает, какой из них вызывать.
Однако виртуальные деструкторы - это другое дело.
Перегрузка означает наличие нескольких функций с одним и тем же именем, которые принимают разные аргументы. Подобно swap (int & a, int & b)
и swap (double & a, double & b)
. Деструктор не принимает аргументов. Перегрузка не имеет смысла.
Если вам нужно делать разные вещи при уничтожении объекта в зависимости от определенных обстоятельств, вам просто нужны соответствующие операторы if в вашем деструкторе, чтобы проверить эти обстоятельства.
Не знаете. В одном классе не может быть двух деструкторов.
Чего вы пытаетесь достичь?