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

Грязный хук. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Классы и функции http://www.cyberforum.ru/cpp-beginners/thread100156.html
Вопрос по поводу "идеологии" написания классов. Как лучше писать реализации? Есть ли смысл создавать функции, которые по сути аналогичны предназначению метода класса и просто вызывать их из методов? Например, так: void ker_foo( /* ... */ ) { } class Class
C++ 5 программ. Срочно 1.Написать программу номер дня недели,название дня недели или сообщение об ошибке ,если введены неверные данные 2.написать программу которая выводит таблицу квадратов первых 10 целых полодительных чисел. 3. Написать программу которая выводит таблицу квадратов первых 5 положительных чисел 4. Написать программу которая вычисляет сумму ряда 1+1/2+1/3+...+1/н н-вводит пользователь. 5. Написать... http://www.cyberforum.ru/cpp-beginners/thread100133.html
Метод Гаусса для решения СЛАУ с использованием одномерного массива C++
Доброго всем времени суток. У меня есть прога для двумерного массива #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; void f(double an, double bn,int m) { int i,j; cout << " \n";
Сумма квадратов цифр любого числа в итоге равняется числу из интервала [1,9]. C++
Помогите решить с объяснениями. Сумма квадратов цифр любого числа в итоге равняется числу из интервала . Вывести количество и сами числа, сумма цифр которых равны либо 1, либо 4, из интервала от 1 до 500. Программа должна содержать рекурсивную функцию подсчета суммы цифр числа.
C++ В вещественной матрице размером NxN найти максимальный и минимальный элементы. http://www.cyberforum.ru/cpp-beginners/thread100116.html
Помогите решить с объяснениями. В вещественной матрице размером NxN найти максимальный и минимальный элементы. Переставить строки, в которых они находятся. Если они находятся в одной строке, выдать об этом сообщение. Программа должна содержать функции нахождения строк в которых находятся максимальный и минимальный элементы.
C++ вычисление простых чисел в книге написана программа, про вычисление простых чисел. #include <iostream> #include <math.h> using namespace std; int main() { int n; bool prostoe = true; double koren = sqrt(double(n)); подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
01.03.2010, 18:32     Грязный хук.
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Evg, по поводу условий легальности delete this: [16.15] Is it legal (and moral) for a member function to say delete this?
А у тебя есть 100% уверенности по всем пунктам, которые написаны в этом факе? Т.е. если ты между delete и return не написал ни одной строки, то есть у тебя гарантия 100%, что между ними компилятор не наплодит какого-то кода (хотя бы по части exception'ов, о которых писал выше), который может зацепить this?

Добавлено через 8 минут
Просто вот о чём я пишу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class T
{
public:
  T();
  ~T();
};
 
extern int func2 (void);
 
int func (void)
{
  T t;
 
  return func2();
}
Функция func проще некуда, однако код нехилый

Код
...
        call    _Z5func2v, 0  <--- это вызов func2
         nop
.LLEHE1:
        mov     %o0, %l0
        add     %fp, -24, %g1
        mov     %g1, %o0
.LLEHB2:
        call    _ZN1TD1Ev, 0  <--- это вызов деструктора t (ожидаемо)
         nop
.LLEHE2:
        st      %l0, [%fp-28]
        b       .LL1    <---- это переход в конец процедуры (на return)
         nop
.LL6:
        st      %i0, [%fp-32]  <--- отсюда начинается код по размотке стека
.LL2:
        ld      [%fp-32], %l0
        add     %fp, -24, %g1
        mov     %g1, %o0
        call    _ZN1TD1Ev, 0
         nop
        st      %l0, [%fp-32]
.LL4:
        ld      [%fp-32], %o0
.LLEHB3:
        call    _Unwind_Resume, 0
         nop
.LLEHE3:
.LL1:
        ld      [%fp-28], %i0  <--- вот здесь реальный выход из процедуры
        ret
        restore
.LLFE2:
        .size   _Z4funcv, .-_Z4funcv
Данный тест не совсем подходит к нашей теме, поскольку в процедуре мы имеем локал типа класс. Но точно ли нет ситуаций, когда в "простом" методе не выскочит вот такой вот код. Я плохо владею плюсами, чтоы экспериментировать. Может для этого нужно какое-то ацкое множественное виртуальное наследование или ещё что-то типа того. К тому же здесь используется версия gcc, умеющая работать с libunwind, а другие компиляторы могут это дело реализовывать по другому и механизм будетболее тяжёлым
 
Текущее время: 16:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru