#include <iostream>
int main()
{
using namespace std;
enum class Color
{
RED,
BLUE
};
enum class Fruit
{
BANANA,
APPLE,
};
Color color = Color::RED;
Fruit fruit = Fruit::BANANA;
if (color == fruit)
{
cout < "Color is fruit?" << endl;
}
}
이렇게 class를 사용해주면 비교가 안되게 막아줍니다. 물론 if(color == fruit)도 (static_cast<int>(color)) 이런식으로 강제로 변환해서 할 수도 있지만 이렇게 강제로 캐스팅을 할 수도 있지만 실전 프로그래밍을 하실 때 문제가 될 일을 만들어서 할 일은 없겠죠?
typedef double distance_t;
'
내가 distance_t를 쓸 때는 double 데이터 타입에 새로운 이름을 붙여준 것입니다.
\
int main()
{
typedef double distance_t;
double my_distance;
distance_t home2work;
return 0;
}
이렇게 할 경우 둘 다 double로 받아들입니다. 이렇게 typedef는 double이라는 것에 새로운 이름을 써준 것입니다. 이는 오로지 사용자의 편의를 위한 것입니다.
만약 distance를 표현할 때 double 말고 float를 쓰고 싶을 때가 있겠죠? 거기에서 바꿔주는 것을 어떻게 해야할지 고민한다면 typedef double을 typedef float만 바꿔주면 되기에 코드를 유지 관리하기 쉬워서 이 함수를 쓰는 것입니다.
vector<pair<string, int>> pairlist;
string과 int가 복잡한 자료형이 존재할 수 있다고 생각하시면 됩니다. pairlist1이 있고 pairlist2가 있다면 매번 이걸 타이핑하지는 않겠지만 보기에는 불편합니다.
그래서 얘도 이름을 붙여주면서 이를 간소화할 수 있는 것입니다.
다양한 것을 하나의 변수로 설명하고자 할 때 구조체를 사용해주시면 됩니다. 하나의 사용자정의 자료형인 것처럼 사용하자는 것입니다.
이 구조체는 C언어 자체로 중요한테 C++에서는 CLASS를 이해하기 위한 중요한 요소를 다 포함하고 있습니다.
struct Person
{
double height1;
float weight;
int age;
string name;
};
int main()
{
Person me{2.0, 100.0, 20, "Jack jACK"};
Person mon;
Person dad;
return 0;
}
구조체는 이런식으로 만들어줄 수 있습니다. 훨씬 더 간편하게 사용할 수 있겠죠?
'IT 프로그래밍 > C++' 카테고리의 다른 글
[따배시 5.7 ~ 5.8] 반복문 for, break, continue (0) | 2024.03.23 |
---|---|
[따배시 5.4] goto 반복문 while (0) | 2024.03.23 |
C-string과 string의 차이 (0) | 2024.03.18 |
[따배시 2.6] 논리 연산자 Logical Operators (0) | 2024.03.15 |
[C++] 두 날짜 간의 어느 것이 더 이른지 비교하는 프로그램 작성 (0) | 2024.03.09 |