목록1-2/C++프로그래밍 (14)
브래의 슬기로운 코딩 생활
C++ 기말고사는 다음주 목요일 이다. 다음주 중에 시험 범위를 정리할 시간이 별로 없을 것 같아서 미리 정리를 했다. C++ 기말고사 정리 202114013 김동현 객체의 멤버 호출 직접참조연산자: “.” - 일반 객체가 멤버에 접근하기 위해 사용 간접참조연산자: “->” - 포인터 객체가 멤버에 접근하기 위해 사용 배열의 이름은 그 배열의 시작 주소이다 생성자: 객체가 생성될 때 자동으로 호출, 클래스명(), 리턴형을 쓰지 않는다, 중첩이 가능하다. 소멸자: 객체가 소멸될 때 자동으로 호출, ~클래스명(), 리턴형을 쓰지 않는다, 중첩이 불가능하다. C++에서 변수를 초기화 하는 방법 int x=1; - copy initialization int y(2); - direct initialization ..
바인딩에는 두 종류가 있다. 정적 바인딩과 동적 바인딩 인데 정적 바인딩은 컴파일 시 변수나 함수가 결정 되는 것이고 동적 바인딩은 실행할 때 결정되는 것이다. 그리고 오버로딩과 오버라이딩의 차이점은 오버로딩은 같은 클래스 안에 이름이 같고 매개변수의 수나 타입이 다른 함수가 중복되 있는 것이고 오버라이딩은 부모클래스와 자식클래스에 이름과 매개변수의 수와 타입도 완전히 같지만 리턴값만 다른 함수가 여러개 존재하는 것이다. 오버라이딩은 부모 클래스의 함수에 virtual키워드를 쓰면 된다. 그리고 정적 맴버 변수는 객체들 모두 공유하는 멤버 변수라는 뜻이다. 그리고 정적 멤버 변수를 선언하면 반드시 정의를 해주어야 한다. 마지막으로 탬플릿은 사용하면 자료형을 나중에 결정하는 것으로 template 을 쓰고..
오늘은 클래스 상속에 대해 배웠다. 상속은 코드를 재사용하기 위하여 사용한다. 언어별 클래스 상속 형식 대부분 public을 사용한다. 상속을 하면 생성자와 소멸자는 생성자는 부모 클래스 먼저 호출이 되고 소멸자는 자식 클래스 먼저 호출이 된다. 이거 아주 중요하다. 잘 안 쓴다. 과재: #include using std::cout; using std::endl; using std::string; class Man { protected: string name; int age; public: Man(string name, int age) { this->name = name; this->age = age; } void show() { cout
오늘은 함수 중첩과 생성자 중첩 디폴트 인자에 대하여 공부 하였다. 일단 객체 지향 프로그래밍의 3가지 특징은 캡슐화, 상속성, 다형성이 있다. 오늘 배운 내용은 다형성에 관한 내용이다. 함수 중첩은 C언어에서는 안되지만 C++은 가능하다. 함수 중첩은 하나의 함수명으로 여러 개의 유사 목적으로 사용할 수 있다. 생성자도 여러개를 중첩 시킬 수가 있지만 소멸자는 중첩이 불가능 하다. 왜냐하면 함수를 중첩 하는 경우는 매개변수의 형이 다른 경우와 매개변수의 개수가 다른 경우인데 생성자는 매개변수의 개수를 다양하게 할 수 있지만 소멸자는 매개변수 없이 그냥 호출 되기 때문에 소멸자는 중첩 시킬 수 없다. 그리고 디폴트 인자는 말 그대로 호출할 때 매개변수값을 지정하지 않으면 기본값으로 들어갈 값이다. 디폴트..
오늘은 const와 포인터, 동적 메모리 할당 이라는 것을 배웠다. const는 변수를 상수로 만드는 키워드 이고 동적 메모리 할당 이라는건 메모리를 할당할 때 할당할 메모리를 데이터 사이즈에 맞게 자동으로 맞추어 주는 것이다. const는 이렇게 함수에도 쓰이는데 3번쨰의 경우가 중요하다. 3번째 함수 처럼 쓰면 함수 블록 내부에 있는 맴버 변수의 값은 변경하지 않는다는 말이댜. 그래서 단순히 맴버 변수의 값을 리턴하는 getter함수는 거의 모두 const를 써도 된다. 그리고 만약 멤버 함수를 가지고 있는 함수에 const 키워드를 붙이려면 그 멤버 함수도 const함수 여야 한다. 왜냐하면 그 멤버 함수가 멤버 변수의 값을 변화 시킬수 있기 때문이다. 그래서 일반 멤버 함수에는 접근할 수 없다. ..
오늘은 C++중간고사 점수를 확인하고 수업을했다. 나는 30점 만점에 29점을 맞았다. 만점도 5명이나 있어서 A+ 나올수 있을까 걱정이다. 기말에는 다 맞을수 있게 노력해야 겠다. C++에서 가장 중요한 그림 private: 외부에서 접근 불가능 protected: private와 같지만 파생클래스에서는 접근이 가능 //보통 멤버 변수 public: 외부에서 접근 가능 //보통 멤버 함수 객체의 멤버 호출 직접참조연산자: . - 일반 객체가 멤버에 접근할 때 사용 간접참조연산자: -> - 포인터 객체가 멤버에 접근할 때 사용 배열 배열의 초기화 - int[?] = {?,?,...} (중요) 배열의 이름은 배열의 시작주소 문자열 배열을 복사할 때에는 strcpy()를 사용, string을 사용한다면 그냥..
C++ 중간고사 정리 202114013 김동현 논리 연산자 - &&, ||, ! 문자형 변수는 작은 따옴표를 붙인다. 문자열 변수는 큰 따옴표를 붙이고 널문자가 뒤에 자동으로 붙는다. 입출력 스트림 객체 cout, cin - #include std::을 써야하지만 using namespace std;를 써도 된다. 아니면 using std::cout; / using std::cin; 등등 이렇게 하나하나 써주어도 된다. cout >: scanf와 같이 입력에 사용 C++에서는 문자열 자료형 String을 사용할 수 있다. String 은 C언어의 const char*와 같다. String도 사용하려면 using std::string;을 쓰거나 using namespace std;을 쓰면 된다. 함수 정의..
오늘은 드디어 본격적인 C++언어 영역이라고 할 수 있는 클래스에 대해서 배웠다. 일단 객체지향 프로그래밍 언어의 특징 3가지를 알아야한다. 1. 캡슐화 2. 상속성 3. 다형성 이다. 클래스의 접근 권한 중에는 1. private 2. public 3. protected 가 있다. 먼저 private속성은 해당 클래스 내부에서만 접근이 가능하고 생략이 가능한 속성이다. 그러므로 private속성의 변수는 매인 함수라던지 다른 코드블록에서는 접근이 불가능하다는 것이다. 이게 바로 첫번째 특징 '캡슐화'이다. 그리고 public속성은 어디에서든지 접근이 가능하다 마지막으로 protected는 private와 같지만 상속클래스가 있는 경우 그곳에서는 접근이 가능하다. 간단히 상속을 설명하자면 부모클래스와 자..
오늘은 본격적으로 C++주요 문법. 클래스에 대해서 진도를 나갔다. 일단 C언어와 C++의 가장 큰 차이점은 C언어는 구조적 프로그래밍 방식이고 C++은 객체 지향 프로그래밍 방식이다. 둘의 차이점은 다음과 같다. 구조적 프로그래밍은 자료와 처리동작이 따로따로 있지만 객체지향 프로그래밍은 자료와 처리동작을 하나로 묵어놨다. 이렇게 자료와 처리동작을 묶어서 '객체'라고 하는 것이다. 클래스는 구조체와 비슷하지만 좀더 많은 것을 저장할수 있다. 구조체는 멤버 변수를 저장할 수 있지만 클래스는 맴버 변수, 맴버 함수를 저장할 수 있고 접근 범위도 지정할 수 있다. 그렇게 클래스 안에있는 맴버들은 객체가 된다. 그리고 객체는 다른말로 인스턴스 라고도 한다. 객체 지향의 중심기술 3가지가 있다 바로 캡슐화, 상속..
C++에서는 문자열을 표현할 때 const char* 대신 string 이라는 자료형을 쓸수 있다. 대신에 using namespace std; 를 써야한다. 한마디로 std를 써야된다. 함수 선언이 귀찮다면 함수 선언 자리에 함수 정의를 하면 선언과 정의를 같이 할 수 있다. (비추천) 그리고 내가 직접 헤더파일을 만들고 include 할수 있는데 헤더.h 라는 파일이 있으면 표준 헤더 파일이 아니기 때문에 include "헤더.h" 라고 써야한다. 재귀함수는 자기 자신을 호출하는 함수를 말한다. 실매개변수는 함수를 호출할 때 사용하는 매개변수 이고 형식매개변수는 함수 정의에서 사용하는 매개변수 이다. call by value는 실매개변수의 값을 형식매개변수로 전달하는 것 이고 call by refer..