그동안은 개념들을 따로따로 공부해서 서로 연결이 안 됐는데, Basic반에서 개념들을 연결해서 배우니까 이제 이해가 되는 것 같기도 하다...
아침에 풀었던 코드카타 문제 : <음양 더하기>
#include <vector>
using namespace std;
int solution(vector<int> absolutes, vector<bool> signs)
{
int answer = 0;
for (int i = 0; i < absolutes.size(); ++i)
{
if (signs[i]) // 양수면 그냥 더하기
{
answer += absolutes[i];
}
else
{
answer += -absolutes[i]; // 음수면 마이너스 붙여서 더하기
}
}
return answer;
}
if-else 조건문을 삼항 연산자로 만들 수 있을 것 같은데 아직 구조가 익숙하지 않아서 쉽게 만들었다.
| 클래스(Class) | 객체(Object) = 인스턴스 |
|---|---|
| 설계도 / 틀 / 정의 | 설계도로 만든 실체 |
| 붕어빵 틀 | 붕어빵 |
| DNA | 사람 |
| 건물 설계도 | 건물 |
// 클래스를 정의함
class Cat
{
public:
Cat(char*, char) {} // 생성자
char Name[30];
char Color[10];
};
// 삐오를 인스턴스화 → 객체 생성
int main()
{
Cat* BBio = new Cat("BBio", "Brown")
return 0;
}
자료형 = 구조체 = 클래스
자료형(type) = 큰 상자
┣ 기본형 (int, float, ...)
┗ 사용자 정의형 (class, struct 등)
공간 상의 좌표(x,y,z)를 표현하는 자료형이 필요 → struct 사용
class Vector
{
public:
double X;
double Y;
double Z;
};
struct 구조체 : 사용자 정의 자료형빌트인타입 : 이미 언어 스펙상에 정의되어 있는 자료형구조체 : 멤버변수만 담을 때 사용되는 경우가 많음
클래스 : 멤버변수 + 멤버함수 같이 담아서 쓰는 경우가 많음
class Vector
{
public:
double X;
double Y;
double Z;
};
↓↓↓↓↓↓↓↓↓↓↓↓↓
typename<N>
class Vector
{
public:
N X;
N Y;
N Z;
};
int main()
{
// Vector point01;
Vector<float> point01;
return 0;
}
float 은 <자료형 변수명 = 값;> 중에 값
float이라는 값이 N이라는 변수에 저장됨 → N에 float을 찍어냄

클래스는 인스턴스를 찍어냄
템플릿은 클래스 코드를 찍어냄