[전공 CS]/자료구조

[자료구조] C++ 기초(1)_const,explict,#ifndef, #endif

우당탕탕 개발 일지 2024. 5. 16. 22:05

안녕하세요. 우당탕탕 개발일지입니다. 2학년 1학기 데이터 구조론을 듣게 되었습니다. 수업 중 배운 내용을 복습하는 용도입니다. 파이팅!

 

  • class
  • container
  • 초기화 리스트
  • explict
  • #ifndef, #endif
  • const
  • point

 

1. Class(클래스)

class=사용자가 정의한 데이터 타입.

        =새로운 데이터 타입을 만드는 방법.

private

: 객체의 상태를 알려주는 게 변하면 안 되기 때문에 사용.

 


2.container(컨테이너)

컨테이너=데이터를 저장하고 관리하기 위한 클래스.

 

1) 순차 컨테이너 _vector

일반적인 자료구조와 동일한 형태 자료를 입력한 순서대로 저장하기 때문에 저장, 검색, 알고리즘에 불림

=> 많지 않은 자료, 검색 속도 중요하지 않을 때 사용.

 

  • vector와 함께 쓰는 함수 
vector<int>v;  
v.push_back()  새로운 원소를 추가하기 위해 사용. 
임시객체 생성→ 값을 복사 → Vector에 삽입 → 객체 소멸
v.move(v1) v에 v1을 저장하고 v1은 삭제 됨.
v.size() 벡터의 크기를 알 수 있는 함수.

 

 

 

 


3. 초기화 리스트

초기화 리스트 =생성자 함수 초기화.

 

(1) 배열 초기화 리스트:

int myArray[] = {1, 2, 3, 4, 5};

 

(2) 벡터 초기화 리스트

#include <vector>
std::vector<int> myVector = {1, 2, 3, 4, 5};

 

(3) 클래스 멤버 변수 초기화 리스트

class MyClass {
public:
    int x;
    int y;
    MyClass(int a, int b) : x(a), y(b) {}
};

 

 


4.explict

explict = 초기화가 반드시 함수로만 해야 한다.

주로 생성자를 초기화하는데 이용되고 타입이 변하는 걸 방지하는 목적을 가진다.

IntCell obj3=37;// 이렇게 초기화 불가능하게 함
IntCell obj3 (37)  //이렇게 해야한다.

5.#ifndef, #endif

= header file이 2번 호출되는 걸 막음

  • 전처리문: 컴파일 이전에 미리 처리되는 문장

5-1 조건 처리를 위한 전처리문

=> #if, #ifdef, #ifndef, #else, #elif, #endif

: 헤더파일의 중복을 막는 방법의 하나로 #ifndef을 사용한다. 이전에 include 되어 있으면 #endif 쪽으로 점프해 버려 결국 한번 선언되는 것이다.

 

더보기

Q source file에 적지 않고 왜 header file로 왜 분리할까?

A) 클래스를 사용하는 사람은 구현에 관한 걸 굳이 알 필요 없어서. h 분리하는 것


 

6.const

const = 변수나 함수의 값을 변경할 수 없음을 나타낸다.

 

  • const 사용하면은 객체 생성 안 하고도 바로 main함수에서 함수 이름만 적어서 사용 가능하다.
  • . read에 const를 붙이면 읽기 전용으로 쓸 거라는 말이다.
  • nterface에서 const 없이 만들어두고 implement에서 const 없이 해서 동작하게 하려면은 error 난다.
  •  

 

7.point 변수 (*)

point =메모리 주소를 가리키는 변수

  • 값이 같이 변하지 않음→ 주소를 참조하는 게 아니라 point변수 공간을 만들어 줌.
728x90