ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 참조자를 통해 객체의 멤버에 접근
    프로그래밍/C & C++ 2024. 7. 2. 08:05
    728x90
    반응형

    참조자를 통해 객체의 멤버에 접근하는 것은 포인터를 사용하는 것보다 간단하고 직관적입니다. 참조자는 별도의 연산자 없이 객체의 멤버에 직접 접근할 수 있습니다. 이는 참조자가 객체 그 자체처럼 동작하기 때문입니다.

    1. 참조자를 통한 객체 멤버 접근

    참조자를 통해 객체의 멤버 변수나 멤버 함수에 접근하는 방법을 살펴보겠습니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from MyClass!" << std::endl;
        }
    };
    
    int main() {
        MyClass obj;
        obj.value = 42;
    
        MyClass& ref = obj; // obj를 참조하는 ref
    
        // 멤버 변수 접근
        std::cout << "Value: " << ref.value << std::endl; // ref를 통해 value에 접근
    
        // 멤버 함수 호출
        ref.sayHello(); // ref를 통해 sayHello() 호출
    
        return 0;
    }

    2. 함수 인수로 참조자 사용

    참조자를 함수 인수로 사용하면, 함수가 호출될 때 객체가 복사되지 않으므로 성능이 향상되고 메모리 사용이 줄어듭니다. 이는 특히 큰 객체를 다룰 때 유용합니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from MyClass!" << std::endl;
        }
    };
    
    void printValue(const MyClass& ref) { // MyClass 객체를 참조로 받음
        std::cout << "Value: " << ref.value << std::endl;
        ref.sayHello(); // 참조를 통해 멤버 함수 호출
    }
    
    int main() {
        MyClass obj;
        obj.value = 42;
    
        printValue(obj); // 객체를 참조로 함수에 전달
    
        return 0;
    }

    3. 상수 참조자 (const reference)

    상수 참조자는 참조를 통해 접근한 객체의 값을 변경하지 않겠다는 의미를 가지며, 이를 통해 함수 내부에서 객체를 안전하게 읽기 전용으로 사용할 수 있습니다.

    예시:

    #include <iostream>
    
    class MyClass {
    public:
        int value;
        void sayHello() const {
            std::cout << "Hello from MyClass!" << std::endl;
        }
    };
    
    void printValue(const MyClass& ref) { // 상수 참조자로 받음
        std::cout << "Value: " << ref.value << std::endl;
        ref.sayHello(); // 상수 참조를 통해 멤버 함수 호출
        // ref.value = 100; // 오류: 상수 참조자를 통해 값 변경 불가
    }
    
    int main() {
        MyClass obj;
        obj.value = 42;
    
        printValue(obj); // 객체를 상수 참조로 함수에 전달
    
        return 0;
    }

    요약

    • 참조자는 포인터와 달리 별도의 연산자 없이 객체의 멤버에 접근할 수 있습니다.
    • 참조자를 함수 인수로 사용하면 객체를 복사하지 않고도 원본 객체에 접근할 수 있어 성능이 향상됩니다.
    • 상수 참조자는 함수 내부에서 객체를 읽기 전용으로 사용할 수 있도록 보장합니다.

    참조자는 C++에서 객체를 효율적으로 다루고, 코드 가독성을 높이는 데 유용한 도구입니다.

    728x90
    반응형

    '프로그래밍 > C & C++' 카테고리의 다른 글

    [C++] 이동 의미론(Move Semantics)  (0) 2024.07.05
    [C++] 깊은 복사와 얕은 복사  (0) 2024.07.05
    [C++] 포인터를 통해 객체의 멤버에 접근  (0) 2024.07.01
    [C++] 스마트 포인터  (0) 2024.07.01
    [C++] std 뜻  (0) 2024.06.30
Designed by Tistory.