19
Effective Modern C++ Study C++ Korea

[C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Embed Size (px)

Citation preview

Page 1: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea

Page 2: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우
Page 3: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea3

Page 4: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea4

Page 5: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea5

Page 6: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea6

Page 7: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea7

Page 8: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea8

Page 9: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea9

Page 10: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea10

#include <vector>

#include <functional>

class DataObject {

public:

typedef std::function<int (const DataObject&)> FuncType;

explicit DataObject(int data, FuncType ft) : m_data(data), m_funcType(ft) {}

int getHealth() const { return m_funcType(*this); }

int m_data;

private:

FuncType m_funcType;

};

int SimpleIntCalc(const DataObject& d) { return d.m_data*1; }

struct FunctorCalc {

public:

int operator () (const DataObject& d) const {

return d.m_data*3;

}

};

int main() {

DataObject o1(10, SimpleIntCalc);

FunctorCalc h;

DataObject o2(20, h);

DataObject o3(30, [] (const DataObject&) { return 30; });std::vector<DataObject> l = {o1, o2, o3};

for (DataObject& i : l)

std::cout << i.getHealth() << std::endl;

return 0;

}

Page 11: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea11

Page 12: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea12

Page 13: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea13

Page 14: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea14

Page 15: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea15

Page 16: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea16

Page 17: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea17

Page 18: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea18

Page 19: [C++ korea] effective modern c++ study item 5 prefer auto to explicit type declarations +이홍우

Effective Modern C++ StudyC++ Korea19