obj;
int main(){
std::cout << *((int*)&obj) << std::endl;
return EXIT_SUCCESS;
}
Это уб?
Это пиздец
если хочешь получить доступ к приватным полям/методам есть более человеческие способы, без этого пиздеца
1. зачем? 2. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning. Стандарт C99, не знаю применимо ли к C++
Не хочу, это код по сути вырезан из контекста. Мне просто было интересно, является ли такой каст уб'ом
Почитайте стандарт..
в C не является, в плюсах вероятно тоже
Понял, спасибо
но делать так всё равно не стоит, за исключением очень специфичных случаев
Пока это POD - все должно быть ок
В C++ структуры состоящие только из примитивов являются Plain Old Data, и к ним примерно применяются правила Си
Это трэш.
его как минимум нужно покрыть тестами и использовать либо паблик поля, либо структуру. А делать так нет смысла, приватные поля не просто так приватные
Обсуждают сегодня