C++μμλ ν΄λμ€μλ μμ (const) κ°λ μ μ μ©ν μ μμ΅λλ€.
constκ° μ μ©λ ν΄λμ€λ μμ±(attribute)λ₯Ό λ³κ²½ν μ μμ΅λλ€.
κ·Έλ λ€λ©΄ μμ±μ λ©€λ² ν¨μλ₯Ό νΈμΆνλ©΄ μ΄λ»κ² λ κΉμ?
const Player villain {"Villain", 100, 55};
villain.set_name("Thanos"); // COMPILER ERROR
std::cout << villain.get_name() << std::endl; // COMPILER ERROR
villain κ°μ²΄λ₯Ό μμ± ν λ©€λ² ν¨μλ€μ νΈμΆνμ, μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
set_name()μ λ± λ΄λ μ΄λ¦ μμ±μ λ³κ²½νλ κ±°λκΉ κ·Έλ λ€κ³ ν΄λ,
μ΄λ¦μ λ°ννλ get_name()λ λμΌν μ’ λ₯μ μ€λ₯κ° λ°μν©λλ€.
C++μμ μ λ¬ν λ©μλλ μ μ¬μ μΌλ‘ ν΄λμ€λ₯Ό modifyν μ μλ€κ³ νλ¨νκΈ° λλ¬Έμ λλ€.
κ·Έλ λ€λ©΄ μ΄λ₯Ό ν΄κ²°ν λ°©λ²μ 무μμΌκΉμ?
ν΄λμ€ μ μμμ λ©μλ νλ‘ν νμ λ§μ§λ§μ const ν€μλλ₯Ό μ λ ₯νλ©΄ λ©λλ€.
class Player{
private:
...
public:
std::string get_name() const;
...
};
μ΄λ κ² ν λ¨μ΄λ§ μ λ ₯μ μλ£νλ©΄ μ»΄νμΌ μλ¬κ° λ°μνμ§ μμ΅λλ€.
μ¬μ§μ΄, μ»΄νμΌλ¬κ° ν΄λΉ λ©μλλ₯Ό νλ¨νμ¬ λ§μ½ ν΄λΉ λ©μλκ° μμ±μ λ³κ²½νλ €κ³ νλ€λ©΄ μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
μλ¬λ₯Ό μ¬μ μ λ°©μ§ν μ μλ μ μ λλ€.
μμ μμλ‘ λμκ°μ,
const Player villain {"Villain", 100, 55};
villain.set_name("Thanos"); // COMPILER ERROR
std::cout << villain.get_name() << std::endl; // OK
set_name()μ μ¬μ ν μλ¬κ° λ°μν κ² μ λλ€.
μμ±μ λ³κ²½νλκΉ, const κ°λ κ³Ό λ°°μΉλκΈ° λλ¬Έμ λλ€.
νμ§λ§ get_name() λ©μλλ μ΄μ μ μ€νλ¨μ νμΈν μ μμ΅λλ€.
'C++ > κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (OOP)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++] ν΄λμ€ friend | friends of a Class (0) | 2024.01.02 |
---|---|
[C++] μ€νν± ν΄λμ€ λ©€λ² | Static Class Members (0) | 2024.01.02 |
[C++] this keyword | this ν¬μΈν° (0) | 2024.01.02 |
[C++] Move Constructor | μ΄λ μμ±μ (1) | 2024.01.02 |
[C++] Shallow Copying & Deep Copying | μμ λ³΅μ¬ & κΉμ λ³΅μ¬ (1) | 2023.12.29 |