본문 바로가기
프로그래밍/한화비전 VEDA

한화비전 VEDA 2기 : 2주차(C, C++) 정리

by 싸이 덕 2025. 3. 30.
반응형
  • C
    • 파일 입출력
      • 주로 쓰는 함수 : fscanf, fprintf, fread, fwrite -> high level io
    • 컴파일 과정 4단계
      1. 전처리 (gcc -E) : .c -> .i
      2. 컴파일 (gcc -S) : .c(.i) -> .s
      3. 어셈블 (gcc -c) : .c(.s) -> .o
      4. 컬렉트 (로케이트 + 링크) : .exe 파일 생성
        • 로케이트 : 주소 배정
        • 링크 : .o 파일끼리 연결
    • extern : 다른 파일에 잡혀있는 변수와 동기화, 스토리지 클래스의 일부, 분할 어셈블 후 링크해야 함
    • 비트 연산
      • 비트 필터 : 마스크(지울 부분 0, 볼 부분 1)와 AND 연산
      • 비트 셋 : 마스크(설정할 부분 1, 나머지 0)와 OR 연산
      • 비트 클리어 : 비트 셋의 마스크를 반전한 후에 AND 연산
      • 비트 토글 : 마스크(설정할 부분 1, 나머지 0)와 XOR 연산
      • 마스크 표기법 : 00111000 == 0x38 == 7<<3
  •  C++
    • 모던 C++(std=c++11 부터) 문법
      • (int i = 4) == (int i{4}) == (int i(4))
    • ios::sync_with_stdio(bool) : C 표준 stream과 C++ 표준 stream의 동기화 상태 결정
    • cin.tie(bool) : cin과 cout의 순서를 보장함. == 입력 전에 출력 버퍼가 flush됨
    • 실수 정밀도 조정 함수 : setprecision
    • 동적 할당
      • new, delete
      • 메모리 해제 후 nullptr을 대입해 메모리 참조를 제한해야함
    • 레퍼런스 변수 (참조) : int &a = b;
      • lvalue가 rvalue와 완전히 동일한 변수가 됨
      • rvalue에는 상수는 올 수 X. ex) int &ref = 10;
      • 하지만 lvalue에 const를 붙이면 상수가 올 수 O
    • 예외처리
      • try
      • throw
      • catch
        • catch(…) : 처리되지 않은 나머지 예외들을 모두 받음
      • 스택 언폴딩 : 현재 함수에서 catch가 없을 때 상위 함수로 돌아가서 예외를 처리하는 것
      • assert(조건문) : 조건이 틀릴 시 디버그 모드에서 오류 발생시킴
      • noexcept : 함수 옆에 명시. 그 안에서 예외가 발생하면 오류 발생시킴
    • 객체지향 프로그래밍
      • 특성
        • 추상화 : 현실 세계의 대상에서 필요한 부분만 이용해서 모델링
        • 캡슐화
        • 다형성
        • 상속성
      • initializer list
        • 생성자 옆에 :멤버변수(값) 처럼 써서 대입문을 대신함
      • 접근 제어 지시자 : private가 기본
      • 상속 제어자 : 상속 클래스 앞에 사용, 접근 제어자와 동일하게 사용
      • friend class : private 멤버를 접근할 수 있는 친구 클래스
      • 생성자
        • explicit : 생성자를 통한 묵시적 형변환을 금지하는 키워드, 해당 생성자를 제대로 된 방식으로 사용하게 함
        • 디폴트 생성자
          • 생성자를 하나도 명시하지 않았을 때 컴파일러가 자동으로 생성
        • 복사 생성자
          • 객체끼리 대입시 디폴트 복사 생성자(얕은 복사)가 작동
          • 직접 구현(깊은 복사)도 가능
      • 상속
        • 다중 상속
          • 상속 지시자를 클래스당 하나씩 명시해줘야함
        • 생성자는 부모부터 하나씩 호출, void or 디폴트 생성자 부름
        • 소멸자는 자식부터 하나씩 호출
        • 상속 지시자별 멤버 상속 처리
          • private : public, protected 멤버가 private로 상속
          • protected : public, protected 멤버가 protected로 상속
          • public : public, protected 멤버가 그대로 상속
          • 접근 지시자 private 멤버는 상속 X
      • 클래스 내의 static
        • 모든 객체끼리 공유하는 변수
        • 보통 전역 변수처럼 사용
          • 선언 및 초기화 : 타입 클래스::변수이름
      • 오버로딩 vs 오버라이딩
        • 오버로딩 : 추가 (매개변수 순서와 타입으로 함수 비교, 반환값은 구분 요소가 X)
        • 오버라이딩 : 덮어쓰기 (타입과 순서, 반환값까지 동일)
      • 연산자 오버로딩
        • x1 + x2 == x1.operator+(x2) == this.operator+(x1,x2)
        • 멤버 연산자, 전역 연산자 등

 

VEDA 바로가기 : https://www.vedacademy.co.kr/

본 후기는 한화비전 VEDA 2기 학습 기록으로 작성되었습니다.

반응형