ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 헤더. 특징 및 기초
    Developer/C++ 2013. 4. 19. 17:22






    1. Tip 

    일반) 

    - 64비트 프로그램에서도 int는4바이트. 

    배열)

    - 배열은 생성시에만 초기화

    - 배열끼리 대입 불가능

    - 배열에는 하나하나씩 대입

    - 사용시에는 배열 주소를 전달 한다.

    - 배열은 변수로 크기 입력 불가능. 


    상수)

    - const정의 하면서 const 붙이면 상수가 된다. 


    포인터)

    - int* p[20] = int 형 포인터 20개가 들어 있는 배열

    - int (*p)[20] = int 20개가 들어있는 배열형 포인터   

    * []이 * 보다 우선순위가 높ㅇ다. 

    - 포인터는 값 이용시에 (*p)를 묶어 주자. 

    - 함수를 가리키는 포인터 : void (*p)();


    래퍼런스)

    - 변수의 별명이다. 정의할때 고정되며 못바꾼다. 


    메모리) 

    - 동적 메모리 할당 : new, delete, new[], delete[]

    - 동적 메모리는 주소를 반환한다. 포인터에다가 넣는다. : int *p = new int;


    함수)

    - 함수의 매게 변수는 값 복사이다. 그래서 워래 메모리값을 변경하고 싶으면 레퍼런스, 포인터를 전달한다.

    - 함수 이름은 함수에 대한 주소이다. 

    - 함수 포인터에 typedef 쓰는 경우 

    1) typedef int (*P)(int);     P func1; ..? 머지... 

    헤더) 

    - 클래스의 정의는 헤더 파일, 함수 구현부분은 cpp 파일, main 함수는 별도의 cpp 파일로 만든다. 

    - 헤더 파일 중복포함 방지. 


    클래스) 

    - 같은 클래스 끼리는 대입이 가능. 

    - 복사 생성자는 초기화 시에만 호출 

    - 반드시 생성자가 필요한 경우 

    1. const 변수와 레퍼런스 변수가 있을경우( 초기화 시켜줘야 되기 때문) 

    - 생성자 초기화 리스트 

    1. 생성자 코드보다 먼저 실행. 래퍼랜스 멤버, const, 인장 있는 부모 생성자는 반드시 여기서 초기화. 

    - 소멸자 : 객체 소멸시 자동 호출 (포인트 해제 같은거 해야할 시 만듬.) 


    inline)

    - 클래스 내부에서 구현 할 경우 인라인이 된다.

    - 클래스 외부에서 구현시에는 맨 앞에 inline 붙이면 된다. 구현부분은 헤더 파일에 들어 가야한다. 


    상속) 

    - 생성 : 부모  -> 자식

    - 소멸 : 자식 -> 부모


    충돌회피)

    - 다중 상속시 충돌하는 부모 함수 있을경우 부모 클래스명 적어준다. 객채명.부모클래스::함수() 


    가상함수)

    - 부모 클래스 포인터로 자식 객체를 가르킬때 자식 멤버 함수를 실행 시키는것 

    1) 부모 클래스에서 함수 원형 앞에 virtual 붙인다. 구현에서는 붙이지 않는다.

    2) 자식 클래스 함수들은 자동으로 virtual이 된다. 

    - 순수 가상함수 : 함수 정의 부분 맨 앞에 virtual 맨 뒤에 - 자바의 abstract하고 같은것. 


    exterm) 

    - 다른 파일의 전역 변수에 접근하는 법. 


    explicit)

    - 명시적인 형변환만 허락 


    namespace)

    - 전역 공간은 한 프로그램에서 한군데라서 이름이 겹칠 수 없다. 

    - 네임스페이스명::변수, 함수명 

    - 생략 방법 선언 using namespace 네임스페이스 명 



    2) wchar_t 는2바이트 유니코드 문자형 타입





    2. 기초 


    1) 실행 단계 

    - 편집(edit)  ->  전처리(preprocess)  ->  컴파일(complile)  ->  링크(link)  ->  로드(load)  ->  실행(execute) 


    2) 확장자

    - CPP, PXX, CC, C 


    3) 주석 

    - // 와 /* */ 


    4)  << : String Insert Operator

    '\' : escase character 

    associativity : 결합순서 


    5) 출력 문자에는 개행문자 를 넣자.  '\n' 이나 endl


    6) 정수간의 나눗셈은 소수점을 버리지만 이중 하나라도 int 형이 아닌 double 형이라면 모든 계산 값들은 double가 된다. 


    7) Scaling : 크기나 범위 조절 


    8) shifting : 좌우이동, 혹은 평행이동 


    9) 재귀 호출은 반복보다 더 많은 메모리 할당과 호출을 일으키지만 문제의 반영과 이해가 쉽기 때문에 사용된다. 


    10) inline함수는 작고 자주 사용되는 함수에서만 사용되어야 한다.  inline함수는 함수 호출 위치에 호출이 아닌 함수의 코드의 복사본을 만들기 때문이다. 


    11) 상수 변수는 선언과 동시에 초기화 해야 한다. 


    12) 생성자는 클래스 객체를 instance 하면 자동 호출 된다. 


    13) 데이터 멤버는 선언과 함께 초기화 될 수 없다. 멤버 함수나 혹은 생성자를 통해 초기화 되어야 한다. 


    14) #ifndef 와 #endif 로 같은 헤더 파일이 여러번 include 되는 것을 막을 수 있다. 


    15) 클래스의 기본 접근 모드는 private다. 구조체일경우에는 public 이다. 


    16) 생성자와 소멸자는 const로 선언될 수 없다. 


    17) 객체의 초기값이 들어온다면, 생성자 함수는 실행되지 않는다. 


    18) this 포인터가 반납하는 것은 항상 객체 자기 자신의 주소이다. 







    참조 : http://blog.naver.com/ryutuna?Redirect=Log&logNo=100026222336













© 2018 T-Story. All right reserved.