KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The standard and the C++ book say that the default constructor for class type members is called by the implicit generated default constructor, but built-in types are not initialized. However, in this test program I get unexpected results when allocating an object in the heap or when using a temporary object: #include<iostream> struct Container { int n; }; int main() { Container c; std::cout << "[STACK] Num: " << c.n << std::endl; Container *pc = new Container(); std::cout << "[HEAP] Num: " << pc->n << std::endl; delete pc; Container tc = Container(); std::cout << "[TEMP] Num: " << tc.n << std::endl; } I get this output: [STACK] Num: -1079504552 [HEAP] Num: 0 [TEMP] Num: 0 Is this some compiler specific behaviour? I don't really intend to rely on this, but I'm curious to know why this happens, specially for the third case.
Tags (comma-separated)
Save Edits
Cancel