12.16 Anonymous objects

주홍영·2022년 3월 17일
0

Learncpp.com

목록 보기
140/199

https://www.learncpp.com/cpp-tutorial/anonymous-objects/

특정 상황에 우리는 정말 temporarily 사용되는 variable의 경우를 만난다
이때 anonymous object를 사용하여 코드를 더욱 효율적으로 만들 수 있다
예를들어 다음과 같다

#include <iostream>

int add(int x, int y)
{
    int sum{ x + y };
    return sum;
}

int main()
{
    std::cout << add(5, 3) << '\n';

    return 0;
}

위에서 add함수의 sum과 같은 것을 생략할 수 잇는 것이다

#include <iostream>

int add(int x, int y)
{
    return x + y; // an anonymous object is created to hold and return the result of x + y
}

int main()
{
    std::cout << add(5, 3) << '\n';

    return 0;
}

위와 같이 return x + y;를 통해서 우리가 알 수 없는 x+y를 담을 object가 잠시 존재했다 소멸될 것이다

Anonymous class objects

클래스에도 마찬가지로 위와 같은 anonymous object를 만들 수 있다

Cents cents{ 5 }; // normal variable
Cents{ 7 }; // anonymous object

위에서 Cents{7}이라는 클래스 타입에 identifier를 선언하지 않고 바로 initialize를 해서
만들수가 있다 예시를 보자

anonymous object를 사용하지 않은 경우:

#include <iostream>

class Cents
{
private:
    int m_cents{};

public:
    Cents(int cents)
        : m_cents { cents }
    {}

    int getCents() const { return m_cents; }
};

void print(const Cents& cents)
{
   std::cout << cents.getCents() << " cents\n";
}

int main()
{
    Cents cents{ 6 };
    print(cents);

    return 0;
}

anonymous object를 사용하는 경우:

#include <iostream>

class Cents
{
private:
    int m_cents{};

public:
    Cents(int cents)
        : m_cents { cents }
    {}

    int getCents() const { return m_cents; }
};

void print(const Cents& cents)
{
   std::cout << cents.getCents() << " cents\n";
}

int main()
{
    print(Cents{ 6 }); // Note: Now we're passing an anonymous Cents value

    return 0;
}
profile
청룡동거주민

0개의 댓글