반응형
reference_wrapper
<functional>라이브러리템플릿 등에 레퍼런스로 전달할 수 있게 해주는 클래스이다.
예제
#include <iostream>
#include <vector>
#include <functional>
class Base
{
public:
int i_ = 0;
virtual void print()
{
std::cout << "I'm Base\n";
}
};
class Derived : public Base
{
public:
int j_ = 1;
virtual void print() override
{
std::cout << "I'm Derived\n";
}
};
void doSomething(Base& b)
{
b.print();
}
int main()
{
using namespace std;
Base b;
Derived d;
vector<std::reference_wrapper<Base>> my_vec;
my_vec.push_back(b);
my_vec.push_back(d);
for (auto& e : my_vec)
e.get().print();
}
/* stdout
I'm Base
I'm Derived
*/반응형
'SW개발 > C++' 카테고리의 다른 글
| C++ 유도 클래스에서 출력 연산자 사용하기 (0) | 2021.03.21 |
|---|---|
| C++ 동적 형변환 (Dynamic Casting) (0) | 2021.03.21 |
| C++ 객체 잘림 (Object Slicing) (0) | 2021.03.21 |
| C++ 다이아몬드 상속 (Diamond Polymorphism) (0) | 2021.03.21 |
| C++ 인터페이스 클래스 (Interface Class) (0) | 2021.03.21 |