C++ Basic 02

김여울·2025년 6월 13일

내일배움캠프

목록 보기
21/139

그동안은 개념들을 따로따로 공부해서 서로 연결이 안 됐는데, 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 구조체 : 사용자 정의 자료형
  • vs. 빌트인타입 : 이미 언어 스펙상에 정의되어 있는 자료형

구조체 vs 클래스

구조체 : 멤버변수만 담을 때 사용되는 경우가 많음
클래스 : 멤버변수 + 멤버함수 같이 담아서 쓰는 경우가 많음


템플릿

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을 찍어냄

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

0개의 댓글