one님의 블로그

[C++로 시작하는 객체지향 프로그래밍] 내용 정리 2 본문

학과 공부/C++

[C++로 시작하는 객체지향 프로그래밍] 내용 정리 2

one14 2024. 10. 27. 14:57

■ 인라인 선언: 클래스 선언 안에 함수를 구현하면 자동적으로 인라인함수가 됨

   - 구현파일에서 인라인 함수 정의 함수 헤더 앞에 inline

   - 짧은 함수에서 인라인 함수로 하는 것이 좋음

 

■ 데이터필드 캡슐화

    - private로 데이터 필드 선언

    - get, set으로 접근, 변경 set은 void로 선언 UML에서는 함수 생략

 

■ 우선순위: 지역변수 > 전역변수

 

■ 클래스 추상화: 클래스 구현과 실행을 분리

    - 구현의 세부 내용은 사용자에게 캡슐화되어 숨겨짐

 

■ static int number; 객체가 정적변수값 변경하면 클래스 내 모든 객체가 영향받음 (특정 인스턴스에 대해 독립적)

    - 정적 변수/함수 객체 생성하지 않고 접근

      예) Circle::getNumber() ; 또는 circle1.getNumber() ;

 

■ int getNum() const; 함수가 객체 내 데이터필드 변경 못함

    - 정적함수는 상수 정의 불가

 

■ 클래스 재사용 가능한 소프트웨어 개발을 좀 더 유연하고 모듈화되게.

 

 

■ 합성(composition): 집합(aggregation)의 특별한 경우 집합은 has-a관계

     - 소유하고있음(aggregating), 종속됨(aggregated)

     - 관계에 포함된 각 클래스는 다중성(multiplicity) 지정 가능

     - 다중성: 클래스의 객체가 관계에 어떻게 포함되는지 나타낸 수 /간격

     - 집합과 합성의 관계: 구별하지 않고 둘 다 합성이라 함

 

■ 클래스 결합성, 일관성, 캡슐화, 명확성, 완성도, 인스턴스 대 정적

 

■ 포인터: 메모리 주소를 저장 (변수에 할당된 첫번쨰 바이트 주소)

     - 예) int* pCount;= &count (&: 주소연산자, 변수의 주소 반환하는 단항연산자)

     - 포인터로부터 값 참조: *pointer 여기서 *는 역참조연산자(간접연산자)

     - 지역포인터 ⇒ 초기화 필요(안하면 임의의 값 할당) 보통 0으로 초기화

     - 포인터 변수는 한 행에 1개씩만 선언

 

■ 동의어 유형(synonymous type) (예) typedef int integer;

 

■ const double* p= &radius; 포인터는 상수X, 데이터가 상수O

     - double* const p = &radius; p는 상수포인터(선언과 초기화는 동시에)

 

■ 괄호와 첨자가 없는 배열 변수: 배열의 시작 주소 나타냄

     - list+0 : 리스트의 0번 인덱스 주소

     - *(list + 1): 리스트의 1번 인덱스 값

     - 우선순위: * (역참조 연산자, 애스터리스크) > +

     - int * p=list; 배열의 주소가 대입된 포인터 p임 , &연산자 사용하면 안됨

     - 배열 선언 후 주소 변경 불가능

     - 예) char city[2]=”DA”; 문자열 생성(‘D’, ‘A’, ‘\0’ 포함)

728x90