일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 세비야
- 스프링 AOP
- 바르셀로나
- kotiln
- Kotlin
- 아펠가모선릉
- 코프링
- 본식후기
- kopring
- 스페인 준비물
- c# scv
- db index
- 아펠가모
- HTTP #웹기술
- @Component
- 400에러
- http상태코드
- 코틀린
- 마드리드
- Srping AOP
- 그라나다
- sprintboot
- elk
- 코틀린 함수
- b-tree index
- git명령어
- 아펠가모 선릉
- 관심지향프로그래밍
- HTTP
- 스페인
- Today
- Total
끄적이는 메모장
[C++11] auto 본문
# auto
본 블로그를 참고 하였고, 다시 써 가면서 생각을 정리한 것 뿐입니다.
초기화 된 값에 따라서 자동으로 자료형을 결정해주는 기능
-> 초기화 된 값에 영향을 받기 때문에 선언만 하는 것을 불가능 하다.
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 |