|
Тема |
Не вярвам [re: BjarneStroustrup®] |
|
Автор |
Colombino (безработен) |
|
Публикувано | 25.05.05 15:45 |
|
|
>> Зъжалявам - вярно така си го пише в стандарта.
Няма какво да съжаляваш, така си е най-добре. Все пак това не е C, а C++.
__________________
>> Объркването иде от там че ВЦ6 не прави така
В момента нямам инсталирана 6-ца и не мога да проверя, но съм убеден, че не е възможно да има толкова кардинална грешка в компилатора (при копиране на структури да не копира почленнно обектите в тях, а да прави memcpy) и да не съм забелязал. VS6 си има кусури, но съм 99.99% сигурен, че това не е един от тях. Нека ако някой с 6-ца не го мързи да те опровергае. А може и сам да го направиш. По-долу прилагам тестов пример за целта.
__________________
>> Осявен това е налълно възможно да имаш 2 (или повече) инстанции на един клас създадени с от компилация на класа при различен алайнмент, например ако се създават в 2 резлични транслационни единици (срр).
А тва за транслационните единици не ми стана хич ясно, вероятно щото и на теб не ти е ясно. Какъвто е алайна в дефиницията на класа, такъв е в обекта. Алайна в 'транслационната единица' касае подравняването на обекта спрямо съседните му обекти, но не и вътре в него. Т.е. не е възможно да имаш два обекта от един и същи клас с различен алайн на вътрешната структура.
Ако все пак могат да бъдат създадени подобни обекти, то би се дължало само на бъг в прекомпилираните хедъри (там има не малко бъгове, но при чист билд не се проявяват).
И последно: да допуснем, че могат да съществуват подобни обекти (от един клас, но с различен алайн на вътрешната структура). Не виждам как наличието/липсата на експлицитно дефиниран копи конструктор може да подоби, или влоши нещата. Да не предполагаш, че при подобно присвояване компилаторът ще се погрижи да коригира отместванията на обектите от един алайн към друг?!? Не виждам как ще стане.
И накрая ето тестовият пример, който се предполага да печати
internal default constructor
internal copy constructor
internal assignment operator
ако всичко е наред и нещо друго ако не е.
#include <iostream>
struct internal
{
internal()
{ // default constructor
std::cout << "internal default constructor" << std::endl;
}
internal( const internal & )
{ // copy constructor
std::cout << "internal copy constructor" << std::endl;
}
internal& operator=( const internal & )
{ // assignment operator
std::cout << "internal assignment operator" << std::endl;
return *this;
}
};
struct container
{
internal _i;
};
void main(void)
{
container c1; // default construction
container c2 = c1; // copy construction
c2 = c1; // assign
}
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_Редактирано от Colombino на 25.05.05 15:48.
|
| |
я пробвайте да компилирате това:
| zaphod
| 20.05.05 12:04 |
Я пак, че не разбрах нещо
| Colombino
| 20.05.05 13:11 |
Re: Я пак, че не разбрах нещо
| Pekoнcтpykтop
| 20.05.05 15:42 |
Не точно
| Colombino
| 20.05.05 16:01 |
Re: Не точно
| Dorian_Gray
| 20.05.05 16:49 |
Именно, де
| Colombino
| 20.05.05 17:00 |
"членове с деструктори"-ебааа!!!
| focusnik
| 20.05.05 17:27 |
Re: Я пак, че не разбрах нещо
| void*
| 20.05.05 17:15 |
Другари!
| BjarneStroustrup®
| 21.05.05 10:07 |
Re: Другари!
| Colombino
| 21.05.05 12:26 |
Re: Другари!
| BjarneStroustrup®
| 21.05.05 12:48 |
Re: Другари!
| Colombino
| 21.05.05 13:15 |
Re: Другари!
| void*
| 22.05.05 02:05 |
Тва на мен ли го казваш?!?
| Colombino
| 22.05.05 14:39 |
Re: Тва на мен ли го казваш?!?
| void*
| 22.05.05 20:07 |
Re: Тва на мен ли го казваш?!?
| BjarneStroustrup®
| 25.05.05 12:32 |
Не вярвам
| Colombino
| 25.05.05 15:45 |
Re: Не вярвам
| BjarneStroustrup®
| 25.05.05 16:35 |
Re: Тва на мен ли го казваш?!?
| void*
| 25.05.05 16:24 |
Re: Тва на мен ли го казваш?!?
| BjarneStroustrup®
| 25.05.05 16:37 |
Re: Другари!
| xyz
| 21.05.05 16:46 |
Re: Другари!
| Colombino
| 21.05.05 20:12 |
Re: Другари!
| zaphod
| 21.05.05 20:40 |
Re: Другари!
| Colombino
| 21.05.05 21:00 |
Re: Другари!
| xyz
| 21.05.05 21:39 |
Re: Другари!
| zaphod
| 21.05.05 23:30 |
Re: Другари!
| xyz
| 22.05.05 01:33 |
Re: Другари!
| zaphod
| 22.05.05 09:02 |
Re: Другари!
| xyz
| 22.05.05 23:20 |
Бъди джигит!
| Colombino
| 22.05.05 23:40 |
Re: Бъди джигит!
| xyz
| 23.05.05 13:14 |
бе това на къв компилатор
| zaphod
| 23.05.05 14:35 |
Re: бе това на къв компилатор
| Colombino
| 23.05.05 14:55 |
оправих го
| zaphod
| 23.05.05 15:03 |
я като си зачекал темата
| zaphod
| 23.05.05 13:37 |
Баси извратения синтаксис!
| Colombino
| 23.05.05 16:20 |
Re: Баси извратения синтаксис!
| zaphod
| 23.05.05 17:49 |
Re: я като си зачекал темата
| void*
| 23.05.05 20:32 |
Re: я като си зачекал темата
| zaphod
| 23.05.05 21:48 |
IDispatch
| ~!@$%amp;^*()_+
| 23.05.05 22:54 |
Re: IDispatch
| zaphod
| 24.05.05 08:33 |
Re: IDispatch
| ~!@$%amp;^*()_+
| 24.05.05 10:02 |
Re: я като си зачекал темата
| void*
| 24.05.05 03:27 |
Re: я като си зачекал темата
| zaphod
| 24.05.05 08:22 |
Re: я като си зачекал темата
| void*
| 24.05.05 14:06 |
тоя метод за викане на конструктор
| zaphod
| 23.05.05 14:26 |
Не бачка?!?
| Colombino
| 23.05.05 14:33 |
Re: Не бачка?!?
| zaphod
| 23.05.05 14:53 |
ами очаквах
| zaphod
| 20.05.05 16:18 |
Я пак помисли
| Colombino
| 20.05.05 16:48 |
Re: ами очаквах
| void*
| 20.05.05 17:19 |
Re: ами очаквах
| Colombino
| 20.05.05 17:25 |
Re: ами очаквах
| void*
| 20.05.05 18:14 |
Re: ами очаквах
| Colombino
| 20.05.05 18:23 |
Re: ами очаквах
| void*
| 20.05.05 18:29 |
Ми не знам
| Colombino
| 20.05.05 18:37 |
Re: Ми не знам
| focusnik
| 20.05.05 18:43 |
Re: Ми не знам
| void*
| 20.05.05 19:11 |
Не съм съгласен, мистерията остава
| Colombino
| 20.05.05 20:01 |
Re: Не съм съгласен, мистерията остава
| void*
| 20.05.05 20:28 |
ето и окончателния отговор
| void*
| 22.05.05 03:12 |
Re: ето и окончателния отговор
| явepтъ
| 24.05.05 02:31 |
Re: Не съм съгласен, мистерията остава
| zaphod
| 20.05.05 22:35 |
Re: Не съм съгласен, мистерията остава
| void*
| 21.05.05 00:56 |
ц++ има адски много кусури
| ~!@$%amp;^*()_+
| 21.05.05 02:04 |
Re: ц++ има адски много кусури
| void*
| 21.05.05 12:01 |
Re: Не съм съгласен, мистерията остава
| zaphod
| 21.05.05 07:56 |
Re: Не съм съгласен, мистерията остава
| BjarneStroustrup®
| 21.05.05 11:14 |
Подкрепям
| Colombino
| 21.05.05 12:32 |
Re: Подкрепям
| BjarneStroustrup®
| 21.05.05 12:50 |
Re: я пробвайте да компилирате това:
| Чвopko
| 20.05.05 13:38 |
Re: я пробвайте да компилирате това:
| Пeтpocян
| 20.05.05 13:40 |
|
|
|
|