728x90

LANG 47

[C++]04-1.정보은닉(Information Hiding)

if) 좌상단 좌표값 하나 (0 이상 100 이하), 우하단 좌표값 하나(0 이상 100 이하)를 받아서 직사각형을 정의하는 class를 만드는 경우 ->1 ) 좌표값은 0 ~ 100을 벗어나선 안되며 2) 좌상단 좌표 < 우하단 좌표여야 함. 이것이 벗어나면 오류를 나타내야 함 정보은닉이 필요한 이유 : 1) 제한된 방법으로의 접근만 허용해서 잘못된 값이 저장되지 않도록 도와야 하고 2)실수했을 때 실수가 쉽게 발견되도록 해야 함 like this //Point.h class Point { private: int x; int y; ... } //Point.cpp bool Point::InitMembers(int xpos, int ypos) { if(xpos < 0 || ypos < 0) { cout x..

LANG/C++ 2023.05.12

[C++]03-3.객체지향 프로그래밍의 이해

1.객체지향 프로그래밍의 이해 현실에 존재하는 사물, 대상, 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍 "나는 과일장수에게 2000원을 주고 두 개의 사과를 구매했다." (굵은 글씨가 객체) 2.객체를 이루는 것은 데이터와 기능입니다. 과일장수의 관점을 '과일 판매'에 두면 1) 과일장수는 과일을 팜 -> 행동(behavior) 2)과일장수는 사과 20개, 오렌지 10개를 보유하고 있음 -> 상태(state) 3)과일장수의 과일판매 수익은 현재까지 5만원임 -> 상태(state) 객체는 하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)으로 구성됨 상태정보: 변수 통해서 표현/ 행동 : 함수 통해서 표현 *보유하고 있는 사과의 수 -> int numOfApples; *판매 수익 ..

LANG/C++ 2023.05.12

[C++]03-2.클래스(Class)와 객체(Object)

1.클래스와 구조체의 유일한 차이점 struct Car { } struct 대신에 class로 바꾸면 그냥 class임 class Car { } Car run99; (0) Car run99 = {"run99", 100, 0}; (x) 클래스는 이런 식으로 변수 선언 못함 따로 초기화하는 함수를 만들어줘야 함 접근과 관련해서 별도의 선언을 하지 않으면, 클래스 내에 선언된 변수 및 함수에 대한 접근 허용하지 않으니 접근과 관련된 지시를 별도로 내려야 함! 2.접근제어 지시자(접근제어 레이블) 1)public : 어디서든 접근허용 2)protected : 상속 관계에 놓여있을 때 , 유도클래스에서의 접근허용 3)private : 클래스 내(클래스 내 정의된 함수)에서만 접근허용 구조체와 클래스 둘 다 접근제..

LANG/C++ 2023.05.12

[C++]03-1.C++에서의 구조체

구조체 : 연관 있는 데이터를 묶을 수 있는 문법적 장치 1.C++에서의 구조체 변수의 선언 C언어에서 구조체 변수를 선언하는 방법 struct Car basicCar; struct를 생략하기 위해서는 별도의 typedef 선언을 추가해야 함 but C++에서는? struct 안써도 돼! Car basicCar; 2.구조체 안에 함수 삽입하기 기존의 문제) Car에 종속적인 함수들을 구조체 밖에다가 쓰면 전역함수의 형태를 띄기 때문에 Car에 종속적임을 나타나지 못함. 따라서 다른 영역에서 이 함수를 호출하는 실수를 범할 수도 있음 C++에서는 구조체 안에 함수를 삽입하는 것을 허용함 //1.기존 형태 struct Car { ... } void Accel(Car &car) { ... } //2.함수를 구..

LANG/C++ 2023.05.12

[C++]02-6.C++에서 C언어의 표준함수 호출하기

1.c를 더하고 .h를 빼라. C언어의 표준함수를 사용하고 싶을 때. #include -> #include #include -> #include #include -> #include #include -> #include C언어의 함수를 C++에서도 호출할 수 있음. 2.C++의 헤더를 선언해야 하는 이유 여전히 C함수호출을 허용하는 이유는 '하위 버전과이 호환성'제공을 위해서임 C++ 표준라이브러리가 제공하는 함수들과 C표준 라이브러리가 제공하는 함수들이 완전히 똑같지도 않음 => 가급적 C++표준 헤더를 이용해서 함수 호출하는 것이 좋음. 윤성우의 C++ p.99 정답 1. 2.

LANG/C++ 2023.05.11

[C++]02-5.malloc & free를 대신하는 new &delete

C언어의 동적할당의 단점: 1.할당할 대상의 정보를 무조건 바이트 크기단위로 전달해야 함 2.반환형이 void 형 포인터이기 때문에 적절한 형변환을 거쳐야 함 C++에서의 new, delete: 위의 단점을 보완해줌 -int형 변수의 할당 : int * ptr = new int; -double형 변수의 할당 : double * ptr2 = new double; -길이가 3인 int형 배열의 할당 : int * arr1 = new int[3]; -길이가 7인 double형 배열의 할당 : double * arr2 = new double[7]; -앞서 할당한 int형 변수의 소멸 : delete ptr1; -앞서 할당한 double형 변수의 소멸 : delete ptr2; -앞서 할당한 int형 배열의 소멸..

LANG/C++ 2023.05.11

[C++]02-3.참조자(Reference)의 이해

포인터랑 비슷할 수 있지만 다름. 더 쉬움 1.참조자의 이해 변수(할당된 메모리 공간)에 둘 이상의 이름을 부여하고 싶을 때 씀. int num1 = 2010; int &num2 = num1; => 2010이란 값을 가진 num1이란 아이는 num2이라는 또다른 이름(별칭)을 갖게 됨. num2는 num1의 참조자가 된다. &연산자가 변수의 주소 값을 반환하는 연산자이기 때문에 헷갈릴 수 있지만 새로 선언되는 변수 이름 앞에 등장하면 참조자의 선언 의미! 그렇다고 참조자가 변수는 아님. 둘은 같은 값을 갖고, 같은 주소값 갖는 것 볼 수 있음. 2.참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언 가능. int num1 = 2759; int &num2 = num1; int &num3 = ..

LANG/C++ 2023.05.11

[C++]02-1.Chapter 02의 시작에 앞서

1.C언어의 복습을 유도하는 확인학습 문제 [문제 1]키워드 const의 의미 - const int num = 10; => 변수 num을 상수화! - const int *ptr1 = &val1; => 포인터 ptr1을 이용해서 val1의 값을 변경할 수 없음 - int * const ptr2 = &val2; => 포인터 ptr2가 상수화 됨 - const int * const ptr3 = &val3; => 포인터 ptr3가 상수화되었으며 , ptr3을 이용해서 val3의 값을 변경할 수 없음 [문제 2]실행중인 프로그램의 메모리 공간 -데이터 : 전역변수가 저장되는 영역 -스택 : 지역변수 및 매개변수가 저장되는 영역 -힙: malloc 함수호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당이 이뤄지..

LANG/C++ 2023.05.11
728x90