Форум программистов, компьютерный форум CyberForum.ru

Разрушение объектов при наследовании - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как менять переменные в main через функцию http://www.cyberforum.ru/cpp-beginners/thread351234.html
допустим, есть некая функция "function" void function(int a){ a=12345; } и "мейн" int main() {
C++ Создание 3-х мерного динамического массива Что-то туплю.. не могу сделать 3-х мерный динамический массив int *a;int q,n,r,v;int ***b;int m=0; void vvod() { cout<<"vvedite chislo elementov"; http://www.cyberforum.ru/cpp-beginners/thread351223.html
Работа с командной строкой... C++
Помогите использовать возможности командной строки в с++. Задание такое- ввести 200 случайных чисел, записать их в текстовый файл, и этот файл записать на флэшку, в новосозданную директорию, потом считать с флэшки эти данные.. Проблема- копировать и создавать каталоги нужно, использую командную строку.. Вот прога // сиппо3.cpp : Defines the entry point for the console application. // ...
C++ Подскажите, в чём я не прав.
#include <iostream> #include <conio.h> #include <clocale> using namespace std; void push(int *mass, int *sp, int val) { *(sp)++; mass=val; }
C++ признак конца файла http://www.cyberforum.ru/cpp-beginners/thread351174.html
Здравствуйте Проблема в том что функция зацикливается,не доходит до конца файла вот код void crypt(WIN32_FIND_DATAA FindFileData,LPCSTR Dir) { FILE *stream; char path={0}; if ((strcmp(FindFileData.cFileName,"..")==0) || (strcmp(FindFileData.cFileName,".")==0))//нужен только файл {
C++ Сортировки Доброго времени суток друзья! Если вас сильно не затруднит, не могли бы вы мне сделать 2 задачки, до завтра сдать нужно ( Ну или одну, спасибо вас огромное заранее ! 1.В файле input.txt содержатся сведения о группы студентов в формате: номер группы; запись о каждом студенте группы содержит следующие сведения: фамилия, имя, отчество, год рождения, оценки по пяти предметам. Переписать данные... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
14.09.2011, 21:17     Разрушение объектов при наследовании
Цитата Сообщение от htonasral Посмотреть сообщение
Привожу код, вопрос после описания
Output:
A constr
B constr
A destr

Вопрос: почему в таком случае не будет вызван деструктор класса В?
Потому что компилятор сделал статическое связывание вызова деструктора в соответствии со статическим типом указателя. Не виртуальные функции связываются статически на этапе компиляции.

Если вы хотите, чтобы в вашем примере правильно был удавлен объект, а делать виртуальным деструктор вы не хотите, то вы можете написатьо следующий код

C++
1
2
a->~A();
delete a;
И этот код корректно удалит ваш объект.

Я думаю, больше вопросов должен вызывать мой код, а не ваш! С вашим кодом все просто, не то, что с моим!

Добавлено через 3 минуты
Цитата Сообщение от htonasral Посмотреть сообщение
Привожу код, вопрос после описания
Output:
A constr
B constr
A destr

Вопрос: почему в таком случае не будет вызван деструктор класса В?
Потому что компилятор сделал статическое связывание вызова деструктора в соответствии с типом указателя. Не виртуальные функции связываются статически на этапе компиляции.

Если вы хотите, чтобы в вашем примере правильно был удавлен объект, а делать виртуальным деструктор вы не хотите, то вы можете написатьо следующий код

C++
1
2
a->~A();
delete a;
И этот код корректно удалит ваш объект.

Я думаю, больше вопросов должен вызывать мой код, а не ваш! С вашим кодом все просто, не то, что с моим!

А, скорей всго, я вру! Все равно нужен виртуальный деструктор! Так что мой фокус не проходит.
 
Текущее время: 06:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru