Turant initialize kyun karen? Kyunki baad mein koi aisa waqt nahi aata jab tum use likhne ki ijazat rakhte ho. Agar tum ab init nahi kar sakte, toh kabhi nahi kar sakte.
Compiler ise KAISE treat karta hai: Ek const int jo compile-time constant se initialize ho, use binary mein fold kiya ja sakta hai (true constant). Runtime par initialize kiya gaya const phir bhi ek normal read-only memory slot hota hai.
Const variable ko declaration par hi initialize kyun karna padta hai? → Baad mein koi bhi write kabhi allowed nahi hoti.
int* const p — tum kya badal sakte ho? → Pointed-to value, pointer nahi.
Const method ke andar this ka type kya hota hai? → const ClassName*.
const object par kaun se methods call kar sakte ho? → Sirf const member functions.
Kaun sa keyword data member ko const method ke andar badalne deta hai? → mutable.
Recall Feynman: 12 saal ke bacche ko explain karo
Ek sheesha display case imagine karo. const woh sheesha hai: tum andar rakhil khilone ko dekh sakte ho lekin chhu nahi sakte. "Pointer to const" ek ungli hai jo kisi bhi case ki taraf point kar sakti hai lekin andar kabhi nahi ja sakti. "Const pointer" ek ungli hai jo EK case par chipki hui hai lekin tum us ek ko khol sakte ho. "Const member function" ek museum guide hai jo wada karta hai ki woh sirf exhibits dikhayega, kabhi unhe rearrange nahi karega — toh locked (const) rooms bhi guide ko andar aane dete hain.
Const correctness kya hai?
Const ka use karke apni intent declare karna ki data modify nahi karoge, taaki compiler compile time par read-only-ness enforce kar sake bina kisi runtime cost ke.
Const variable ko turant initialize kyun karna padta hai?
Kyunki declaration ke baad use kabhi assign nahi kiya ja sakta, toh ise value milne ka ek hi mauka hota hai — declaration par.
const int* const p ko kaise padhte hain?
Right-to-left: "p ek const pointer hai to a const int" — na pointer badal sakta hai, na pointed-to value.
const int* p mein kya protected hai?
Pointee (woh int) — tum *p = ... nahi kar sakte, lekin p ko repoint KAR sakte ho.
int* const p mein kya protected hai?
Pointer khud — tum p ko repoint nahi kar sakte, lekin *p = ... KAR sakte ho.
Member function ke parameter list ke baad const kya promise karta hai?
Ki function object ke (non-mutable) data members ko modify nahi karega; thisconst ClassName* ban jata hai.
Const object par kaun se member functions call ho sakte hain?
Sirf woh jo const declare hain.
mutable kya karta hai?
Kisi specific data member ko const member functions ke andar bhi modify karne deta hai (caches, mutexes, counters ke liye).
C++ mein const-ness deep hoti hai ya shallow?
Shallow (bitwise): ek const object ka pointer member ek const pointer ban jata hai, lekin jis data ko woh point karta hai woh automatically const nahi hota.
Originally-const object par const_cast-phir-modify karna dangerous kyun hai?