본문 바로가기
IoT 디바이스 활용/C++

C++ - 객체와 함수

by cooluk 2020. 10. 12.

객체와 함수


객체와 함수

  • 객체와 함수의 관계
    • 객체가 함수의 매개 변수로 전달되는 경우
    • 객체의 참조자가 함수의 매개 변수로 전달되는 경우
    • 함수가 객체를 반환하는 경우

  • 객체가 함수의 매개변수로 전달되는 경우 - param.cpp

    • 함수의 인수는 기본적으로 값에 의해 매개 변수로 전달
      • 객체일 때도 마찬가지 --> 객체가 복사됨
    #include <iostream>
    using namespace std;
    
    class Pizza {
    public:
        int size;
        Pizza(int s) : size(s) {}
    };
    
    void makeDouble(Pizza p) {
        p.size *= 2;
    }
    
    int main() {
        Pizza pizza(10);
        makeDouble(pizza);
        cout << pizza.size << "인치 피자" << endl;
    
        return 0;
    }

    10인치 피자



  • 객체가 함수의 매개변수로 전달되는 경우 - reference_param.cpp

    • 객체를 복사하지 않고, 원본 복사에 새로운 이름을 부여하고 그 이름으로 접근
    • int i;
    • int& j = i; // i에 대한 참조자(새로운 이름) 정의
    #include <iostream>
    using namespace std;
    
    class Pizza {
    public:
        int size;
        Pizza(int s) : size(s) {}
    };
    
    void makeDouble(Pizza& p) {
        p.size *= 2;
    }
    
    int main() {
        Pizza pizza(10);
        makeDouble(pizza);
        cout << pizza.size << "인치 피자" << endl;
    
        return 0;
    }

    20인치 피자



  • 함수가 객체를 반환하는 경우 - object_return.cpp

    • 객체의 내용이 복사될 뿐 원본이 전달되지 않음
    #include <iostream>
    using namespace std;
    class Pizza {
    public:
        int size;
        Pizza(int s) : size(s) {}
    };
    
    Pizza makePizza() {
        Pizza p(10);
        return p;
    }
    
    int main() {
        Pizza pizza = makePizza();
    
        cout << pizza.size << "인치 피자" << endl;
    
        return 0;
    }

    10인치 피자


    정적할당 된 리턴값을 참조로 받을 수 없다. (&pizza X : 원본이 메모리에서 사라지므로)

'IoT 디바이스 활용 > C++' 카테고리의 다른 글

C++ - 포인터  (0) 2020.10.12
C++ - 객체 배열, 벡터  (0) 2020.10.12
C++ - 생성자와 접근 제한자  (0) 2020.10.12
C++ - 클래스와 객체  (0) 2020.10.11
C++ - 문자열  (0) 2020.10.11

댓글