728x90

전체 글 274

[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

[C++] 01-5.이름공간(namespace)에 대한 소개

이름공간 : 이름을 붙여놓은 공간. 201호에 사는 철수와 202호에 사는 철수를 구분한 것. 필요성: 같은 company에서 각자 코드를 짰을 때 함수명이 겹칠 경우 등에서 필요 (C언어였다면? 각자 회사에서 코드 짜는거 다 이름 조금씩 다르게 해서 맡았어야 함;; => C++은 정말 진화한 언어다!) 결과: 각자의 함수 이름이 같아도 namespace가 다르므로 오류가 생기지 않음! 연산자 :: : 범위지정 연산자(scope resolution operator), 이름 공간을 지정할 때 사용하는 연산자. 1.이름공간 기반의 함수 선언과 정의의 구분 동일한 이름공간에 정의된 함수를 호출할 때에는 이름공간을 명시할 필요가 없음. 아래가 그 예 2.이름공간의 중첩 이름공간은 다른 이름공간 안에 삽입될 수 ..

LANG/C++ 2023.05.11
728x90