Прежде чем вы начнете отмечать это как дубликат, я уже прочитал this. Но это не отвечает на мой вопрос.Почему размер предопределенных объектов потока зависит от компилятора и компилятора?
Я согласен с тем, что sizeof (int) - это реализация определенного поведения в C & C++. Но я был удивлен, когда тестировал следующую программу на разных компиляторах.
#include <iostream>
using std::cout;
int main()
{
cout << "Sizeof cout object: " << sizeof(cout) << '\n';
cout << "Sizeof cin object: " << sizeof(std::cin) << '\n';
}
Выход на г ++ 4.8.1 & 4.9.2
Sizeof соиЬ объект: 140
Sizeof CIN объект: 144
Выход на Visual Studio 2010
Размер объекта cout: 80
Sizeof CIN объект: 88
Выход на интернет-компилятор (см видеодемонстрацию here)
Sizeof соиЬ объект: 272
Sizeof CIN объект: 280
Мой вопрос почему это реализация определенного поведения? Почему бы не иметь такой же размер во всех реализациях C++? Разве это не было бы, если бы они имели одинаковый размер для всех компиляторов? Мой друг сказал мне, что это решение принято из-за аппаратных & соображений производительности. Было бы очень полезно Если вы подробно объясните ответ на самом низком уровне. Как аппаратное обеспечение играет здесь роль? Как производительность может быть достигнута за счет использования разных типов размеров в разных реализациях? Почему существует столько различий в размере для cin & объектов cout в вышеупомянутой программе на разных компиляторах?
@ downvoters: почему downvotes? Что не так? – Destructor
Почему бы не реализовать реализацию? Почему все реализации имеют одинаковую реализацию cout/cin? Почему эти объекты должны иметь тот же размер, если даже размер базовых типов, таких как 'long', определяется реализацией? –
Я не вижу смысла в вашем вопросе. Почему размер должен быть одинаковым во всех реализациях? Какие возможные выгоды могут принести? И у вас уже есть частичный ответ прямо в вашем вопросе. Вы уже понимаете, что базовые типы имеют размеры, специфичные для реализации. Но классы состоят из этих основных типов. (Кстати, я не голосовал, но думаю, что вопрос не имеет смысла.) – hvd