代碼中 Stock::update() 等成員函數直接操作 private 修飾的 total_val,編譯通過並正常運行。疑惑:private 不應該只能類內部訪問嗎?成員函數算「類內部」嗎?
是的,成員函數屬於類的內部作用域。
Stock::),即聲明該函數為 Stock 類的成員。private/protected 成員。this 指針隱式傳遞,成員函數通過 this->total_val 訪問當前對象的私有字段,完全合法。Stock s;
s.total_val = 100; // 編譯錯誤:private 成員不可在類外直接訪問
s.update(); // 正確:通過公有成員函數間接修改
封裝的核心是對外隱藏實現細節,而非類內部自隱。成員函數作為類對外提供的接口,理應擁有完全訪問權,以實現不變量維護、邏輯封裝。
理解「類作用域」訪問規則,是掌握 C++ 封裝機制的關鍵一步。