끄적이는 메모장

[C++11] auto 본문

C, C++, C#/C++ 공부

[C++11] auto

밥보92 2018. 5. 30. 11:16
반응형

# auto

 

https://m.blog.naver.com/PostView.nhn?blogId=kyed203&logNo=220068115571&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

본 블로그를 참고 하였고, 다시 써 가면서 생각을 정리한 것 뿐입니다.

 

초기화 된 값에 따라서 자동으로 자료형을 결정해주는 기능

-> 초기화 된 값에 영향을 받기 때문에 선언만 하는 것을 불가능 하다.

 

auto a = 1; -> int

auto b = 'B';  -> char

auto c = 1.1; -> double

auto d = L'B' -> wchar_t

 

또한, 구조체 혹은 클래스도 auto를 이용하여 자료형을 결정할 수 있다.

 

class TEST {

    int test;

} T_class;

auto s = T_class; 

 

또한, 값 이외에도 변수를 받아 자료형을 결정할 수 있으며, 포인터 혹은 참조자를 붙이는 것도 가능하다

 

int n = 1;

auto m = n  -> m은 int

auto &p = n;

auto *r = &n;

 

또한, 함수 포인터 혹은 함수가 될 수 있다.

 

1. 함수 포인터

int SUM(int a, int b)

{

    return a+b;

}

 

void main ()

{

    auto result = SUM;

    std::cout << result(1, 2) << std:endl;

}

 

2. 함수

 

- 매개변수 X

void main()

{

    auto print = []{std::cout<<"print func"<<std::endl;};

    print();

}

 

- 매개변수 O

void main()

{

    auto sum = [](int a, int b){return a+b;};

    std::cout << sum(1, 2) << std:endl;

}

 

- 함수 내부에서 지역변수를 참조시

void main()

{

    int base_number = 1;

    auto sum = [&](int a){return a+base_number;};

    std::cout << sum(1) << std:endl;

}

 

- 참조자를 반환

void main()

{

    auto v = [](int *num) -> int&{return *num;};

}

 

- 반환 형으로 auto를 사용하는 경우 template !

template<typename T1, typename T2>

auto func(T1 t1, T2 t2)->decltype(t1+t2) {

    return t1+t2;

}

T1과 T2의 자료형에 구애 받지 않고 합계 기능을 구현 가능 - > 자료형을 auto가 정해주기 때문

아니라면...

double sum(a,b)

int sum(a,b)

등 각 자료형에 따른 반환 형을 정하여 함수를 일일이 구현해야함

반응형

'C, C++, C# > C++ 공부' 카테고리의 다른 글

[C++11] make_shared  (0) 2018.05.30
[C++11] shared_ptr / weak_ptr  (0) 2018.05.30
[C++11] unique_ptr / smart pointer  (0) 2018.05.30
[C++11] nullptr  (0) 2018.05.30
[C++11] static_assert  (0) 2018.05.30