12.16 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;
}
Author And Source
이 문제에 관하여(12.16 Anonymous objects), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ikmy0ung/12.16-Anonymous-objects저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)