컴영 2020. 4. 15. 20:29

과거 배웠던, 객체지향프로그래밍1.2의 내용을 요약해봤다.


객체지향프로그래밍


1. 기본 데이터 자료형


 

자료형

크기

범위

문자형

char

1Byte, 8bit

-128 ~ 127

 unsigned char0 ~ 255 

정수형 

short

2Byte, 16bit

-32,768 ~ 32,767

unsigned short

0 ~ 65,535

int

4Byte, 32bit

-2,147,483,648 ~ 2,147,483,647

unsigned int

0 ~ 4,294,967,295

long long

8Byte, 64bit

-9,223,372,036,854,775,808 ~

9,223,372,036,854,775,807

unsigned long long

0 ~ 18,446,744,073,709,551,615

논리형 

bool

1Byte, 8bit

True or False

실수형

float

4Byte, 32bit

+/- 3.4e ~ +/-38 (~7 digits)

double

8Byte, 64bit

+/- 1.7e ~ +/- 308 (~15digits)


2. sizeof()연산자

   - 피연산자의 크기를 바이트 단위로 계산하는 연산자.

   - 사용법?

1
2
3
int num = 10;
Printf(“%d”,sizeof(num));  //결과 : 4
Printf(“%d”,sizeof(int));  //결과 : 4
cs


3. 표준입출력

   - 출력 std::cout << 출력 대상;

   - 입력 std::cin >> 변수;

   - 개행 std::endl;


4. 연산자 종류

   ① 대입 & 산술


기타 대입 연산자


   ② 증가 감소 연산자

       


   ③ 관계 연산자 : 두 피연산자의 관계 (크다, 작다 혹은 같다)를 따지는 연산자. True(1), False(0)반환

     


   ④ 논리 연산자 : and, or, not을 표현하는 연산자. True(1), False(0)반환

     

      T = True, F = False

     


   ⑤ 비트 단위 연산자 : ~, &, ^, |, <<, >>

     

      

     


5. 제어문 : if, if ~elseif ~else, switch, for, while, do ~ while, break, continue


6. 배열

   - 배열 선언 : 자료형/ 배열이름/ 배열길이 순

                   Ex) int arr[10];

   - 배열 이름은 포인터 상수이다.

   - 배열 크기 (Byte) = 배열의 요소 개수 * sizeof(배열의 자료형)


7. 함수

   - 특정 기능을 처리하기 위한 명령을 묶어 놓은 작은 프로그램 단위

   - 함수 사용의 장점?

     ① 반복적으로 실행될 내용을 필요할 때마다 호출 가능.

     ② 프로그램이 모듈화(블록화)되어 읽기 쉽고, 디버그와 편집이 쉬움.

     ③ 프로그램의 기능과 구조를 한 눈에 알아보기 쉬움.

   - 종류 ① 라이브러리 함수 : 컴파일러를 제작한 곳에서 미리 만들어 제공하는 함수, include로 헤더파일 가져와 사용.

② 사용자 정의 함수 


8. 포인터자료형

   - 메모리 주소 참조를 위한 자료형

   - 선언 : 포인터 변수가 가리키는 데이터의 데이터형/ 포인터 참조 연산자 * / 포인터 변수

             Ex) int * val;

   - 연산자

     ① & : 변수의 주소 값 반환

     ② * : 포인터가 가리키는 메모리 참조

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a;
int *p;
= 10;
= &a; //p가 정수형 변수 a를 가리킴
cout << *//10출력
 
//int array[3] 배열에서
//    array[0] array[1] array[2] 값가져올때
//    *p      *(p+1)   *(p+2)                  
//    &Array[0] &array[1] &array[2] 주소가져올때
//       p      (p+1)     (p+2)  
 
int arr[3= {0,1,2};
int *ptr = arr;
cout<< ptr[0<< ptr[1<< ptr[2]; //012출력
cs


9. 객체지향 프로그래밍  -> 내용이 길어 다음 포스팅에서 다룬다.


10. 동적메모리 

    - 실행 도중 필요한 메모리를 할당 받아 사용하고, 나중에 메모리를 다시 풀어주는 방법

    - 할당 : new 연산자 사용

    - 해제 : delete 연산자 사용

1
2
3
4
5
int *ptr = new int;
*ptr = 10;
int *arr = new int[3];
delete ptr;
delete []arr;
cs

    - c언어에서 할당 : malloc()

  해제 : free()

1
2
3
4
5
6
#include <stdlib.h>    // malloc, free 함수가 선언된 헤더 파일
int * a;
= (int *)malloc(sizeof(int));
*= 10;
free(a);
 
cs


11. const(상수) 멤버 변수

1
2
const int val = 100;
val = 10//-> error 발생

cs

   - 변수와 달리 const로 지정하면 값을 절대로 바꿀 수 없다.

   - 만일, 클래스 내에 상수 멤버가 있다면 상수 멤버는 멤버초기자 기호 (:)를 통해 초기화가 가능하다.

     생성자 함수 내부 코드에서는 초기화 불가.

1
2
3
4
5
6
7
8
9
10
11
12
13
class Person
{
private:
    char mouth[30] ;     
     const int height  ;  //상수멤버변수
public:
    Person(int phei, char pmouth[30]) : height(phei)
    {
       //height = phei  ; //compiler error 상수멤버변수이므로
       strcpy(mouth , pmouth) ;
    }     
}
 
cs