crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> как склеить несколько char*, интересная загадка №2
Алексей1153
  опции профиля:
сообщение 17.10.2011, 19:31
Сообщение #21


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Iron Bug, не, я же не спорю, что случаи разные бывают. Насчёт же побайтового копирования - неважно, класс это или структура (это одно и то же) , если добавилась хоть одна виртуальная функция, то всё валится нахрен, и спорить тут не о чем :) Одно это уже много проблем создаст.

Насчёт умных компиляторов - я не имел в виду настолько умных ) Только явные оптимизации
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 18.10.2011, 17:13
Сообщение #22


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Алексей1153 @ 17.10.2011, 22:31) *
неважно, класс это или структура (это одно и то же)

это теоретически одно и то же. а на деле компиляторы имеют мелкие отличия. в частности, мелкософт не принимает списка инициализации в конструкторе структуры. и вот хоть тресни. это так, к слову. просто недавно напоролась. так что нифига они не равны и всё зависит от компилятора.

при копировании побайтно все указатели (в том числе и указатель на таблицу виртуальных функций) будут просто скопированы. пока области памяти, на которые они ссылаются, живы - ничего страшного не случится. конечно, трудно придумать применение для таких вещей и сложно их отслеживать. но иногда бывает нужно подменять виртуальные таблицы вручную или вызвать какой-то метод напрямую через адрес, или запихать его в стек или ещё что-то такое подобное. просто нужно понимать механизмы работы классов и знать, что ты делаешь.

Сообщение отредактировал Iron Bug - 18.10.2011, 17:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 18.10.2011, 19:39
Сообщение #23


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата
в частности, мелкософт не принимает списка инициализации в конструкторе структуры. и вот хоть тресни.


первый раз такое слышу.
struct A
{
    int i1;
    int i2;
    A(int i1,int i2):i1(i1),i2(i2)
    {
    }
};


struct B:A
{
    B(int i1,int i2):A(i1,i2)
    {
    }
};

B b(1,2);

Прикрепленное изображение

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.10.2011, 7:49
Сообщение #24


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


значит, у меня компилятор на большом проекте в очередной раз глюканул. он глючит, когда начинает собирать много библиотек в один заход. иногда просто зависает, иногда не может разрулить связи, хотя зависимости проектов проставлены. иногда надо вручную чистить всю его служебную информацию по проекту, чтобы он сожрал код.
но он мне прямо так и написал: мол, нельзя тут список инициализации использовать. вообще, это один из самых ненавистных для меня компиляторов: много непонятных и неожиданных багов и неоптимальный код на выходе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.10.2011, 10:24
Сообщение #25


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Iron Bug, а ты чем пользуешься ? И где описание структуры расположено - может от компилятору этого есть разница, хз )

В студии бывает, что глюкнет и отказывается компилить, но закрываешь проект, удаляешь ncb, потом всё компилится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.10.2011, 12:20
Сообщение #26


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Алексей1153 @ 19.10.2011, 12:24) *
В студии бывает, что глюкнет и отказывается компилить, но закрываешь проект, удаляешь ncb, потом всё компилится

иногда там не только их вроде удалять нужно. мне пока некогда разбираться, у меня работы дофига. вроде с тридесятого раза она сожрала проект. правда, я не знаю, какое конкретно шаманство привело её в рабочее состояние :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 20.10.2011, 0:21
Сообщение #27


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Iron Bug, ты, наверное, его мало выгуливаешь, вот он и кочевряжится )))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 7:03