728x90
반응형
728x90
반응형
728x90
반응형

C++ 상수 포인터

  • C++에서 const char *pci;와 같은 상수 포인터의 사용은 l-value 처리 시 문제가 발생할 수 있으므로 지양해야 합니다.

  • 또한, C++에서는 const 함수 내에서 멤버 변수를 수정하기 위해 mutable 예약어를 제공합니다.

C++ Gotchas https://www.amazon.com/Gotchas-Avoiding-Common-Problems-Coding/dp/0321125185



아래는 상수 포인터와 mutable 예약어의 사용을 설명하는 간단한 예제 코드입니다.

1. 상수 포인터 예제

  • cpp

    #include <iostream>
    
    int main() {
        const char *pci = "Hello, World!"; // 포인터가 가리키는 값은 변경 불가
        pci = "New String";               // 포인터 자체는 다른 주소로 변경 가능
        std::cout << pci << std::endl;
    
        char buffer[] = "Hello!";
        char *const cp = buffer;          // 포인터 자체는 고정되지만 값은 변경 가능
        cp[0] = 'h';                      // 값 변경 가능
        std::cout << cp << std::endl;
    
        return 0;
    }
    

2. mutable 예약어 예제

  • cpp

    #include <iostream>
    #include <string>
    
    class Example {
    private:
        std::string data;
        mutable int accessCount; // const 함수에서도 수정 가능
    
    public:
        Example(std::string str) : data(str), accessCount(0) {}
    
        void display() const {
            ++accessCount; // mutable을 사용해 const 함수에서 수정 가능
            std::cout << "Data: " << data << ", Accessed: " << accessCount << " times\n";
        }
    };
    
    int main() {
        Example ex("Hello Mutable!");
        ex.display();
        ex.display();
    
        return 0;
    }
    

출력값

  • Output

    New String
    hello!
    Data: Hello Mutable!, Accessed: 1 times
    Data: Hello Mutable!, Accessed: 2 times
    

  • 이 예제는 constmutable의 주요 개념을 보여줍니다.

  • mutableconst 함수에서 객체의 특정 멤버 변수에 한해 값을 변경할 수 있도록 합니다.

728x90
반응형

+ Recent posts