목록C++ (23)
브래의 슬기로운 코딩 생활
매개변수, 인자, 리턴값 함수 - C 프로그램은 함수(function)의 집합 - 함수란 특정한 작업을 하도록 만들어진 독립적인 단위 모듈 - 큰 프로그램 하나를 여러 개의 함수로 분할하여 구현하는 구조적 프로그래밍(structured programming) 방식의 기본 - 함수에 입력시키는 것을 매개변수(parameter) 또는 전달인자(인수, argument)라 함 - 함수가 돌려주는 결과 값을 반환값 또는 리턴값(return value)이라 함 C프로그램의 기본 틀 - 콘솔 기반 C 프로그램은 main() 함수로 시작 - main()함수는 콘솔 기반 C 프로그램의 시작점(entry point) - 하나의 프로그램에 반드시 하나 존재 - 리턴값이 없는 함수나 매개변수가 없는 함수는 그 위치에 비어 있..
제어문 - 위부터 아래로 순차적으로 실행되는 프로그램의 실행 순서를 바꾸기 위해서 사용하는 제어문은 C/C++ 언어 뿐 아니라 다른 언어에서도 가장 중요한 문법 - 제어문의 문법은 간단하지만 잘 활용할 수 있느냐에 따라 프로그래밍을 할 수 있는지 없는지 판가름 - for문과 if문의 사용 빈도가 가장 높음 조건문 : if - if문 다음 괄호 안의 조건식이 참이면 문장1을 실행하고 거짓이면 문장1은 실행하지 않고 건너뜀 if(조건식){ 문장 1; } 조건문 : if~else문 - 양자택일의 상황에서 사용 - if문 다음의 괄호 안의 조건식이 참이면 문장1을 실행하고 다음 문장으로 가며, 조건식이 거짓이면 문장2와 다음 문장을 실행 if(조건식){ 문장 1; }else{ 문장 2; } 다중 if~else문..
입출력 스트림 객체 cout, cin - iostream 파일을 프로그램에 포함하면 자동으로 열리는 자동 스트림(stream) 객체 - #include - cout // 키보드로부터 데이터를 입력 받는 객체, scanf() 여러 변수 값 출력(printf vs cout) - printf("%d, %d, %d\n" ,a,b,c); //C - cout
프로그래밍 기본 용어 - 원시 프로그램 소스코드 라고도 하면 프로그래머가 작성한 프로그램 - 컴파일 (compile) 고급 언어들은 기계어로 버역하기 위해 컴파일러나 인터프리터 프로그램이 필요 컴파일 하면 오브젝트 파일이 생성되고 실행 파일을 얻을 수는 없음 - 링킹 (linking) 컴파일하여 만들어진 각 오브젝트 모듈을 연결 사용한 라이브러리와 연결하는 작업 링킹 후에 실행파일 (.exe)을 얻을 수 있음 - 디버깅 (debugging) 컴파일과 링킹 과정에서 소스 코드에 오류가 있을 수 있는데 이를 오류(error) 또는 버그(bug) 라고 한다 버그를 수정하여 프로그램이 실행 되도록 하는 작업 경고(warning)라는 메세지의 오류도 발생하는데 실행은 되지만 무시하면 안됨 C++ 언어의 발전 과정..
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을 사용한다면 그냥..