728x90

이론 80

6. 생성자와 소멸자

PART 2. 객체 지향 프로그래밍 - chapter 6. 생성자와 소멸자 1. 생성자(Constructor) - 생성자는 객체가 생성될 때 자동으로 호출되어 객체를 초기화하는 역할을 한다. - 생성자는 클래스와 이름이 같고, 반환값이 없는 함수이다. 매개변수는 받으니 여러개의 생성자를 중복 정의할 수 있다. - 생성자가 호출되지 않으면 객체 생성도 안되므로 특수한 경우를 제외하고 생성자는 public으로 선언되어 있어야 한다. - 생성자를 명시적으로 작성하지 않았다면 자동으로 디폴트 생성자가 추가되며, 객체가 생성될 때 디폴트 생성자가 호출된다. - 자동으로 추가된 디폴트 생성자는 매개변수도 없고, 함수 본문도 없으므로 아무일도 하지 않는다. - 다른 생성자를 추가하면 디폴트 생성자는 자동으로 추가되지..

5. string 클래스 (기본사항)

PART 2. 객체 지향 프로그래밍 - chapter 4. 객체 지향 소개 C++에서 문자열을 대신해주는 클래스인 string 클래스. 아래의 대입, 비교 등은 연산자 오버로딩을 이용해 구현해둔 것.//char형 배열로 문자열을 표현하는 것을 대신하는 string클래스 #include #include using std::string; using std::cout; using std::cin; using std::endl; int main() { //string 클래스 사용 cout

4. 클래스의 기초

PART 2. 객체 지향 프로그래밍 - chapter 5. 클래스의 기초 예제 : 날짜 정보를 저장하는 Date 클래스 Date.h #pragma once #include #include //클래스 만들기 class Date { //'private' 직접 접근 불가 private: //'멤버 변수'(=필드) 선언 int year; int month; int day; //'public' 직접 접근 가능 public: std::string memo = "실험"; public: //'멤버 함수'(=메소드) 선언 void setDate(int year, int month, int day); void printDate(); int getYear(); int getMonth(); int getDay(); Date(..

3. 객체, 메시지, 클래스, 인스턴스

Part 2. 객체 지향 프로그래밍 - chapter 4. 객체 지향 소개 1. 객체(Object) - 객체는 상태(State)와 동작(Behavior)으로 구성되어 있다. - 상태는 객체의 특징값(속성)이고, 동작은 객체가 취할 수 있는 동작이다. - 객체의 상태는 필드(멤버 변수)로, 동작은 메소드(멤버 함수)로 표현할 수 있다. 2. 메시지(Massage) - 대부분의 객체는 무언가를 실행하기 위해서 다른 객체를 필요로 한다. 이를 위해서는 객체간의 통신 메커니즘이 필요하다. - 객체는 메시지(Massage)를 통해 다른 객체와 통신하고 상호 작용한다. - 메시지는 메시지를 받는 객체, 메시지의 이름, 메시지의 매개 변수의 세 가지의 구성 요소로 이루어진다. - "메시지 전달"은 곧 "멤버 함수 호..

C언어 파일처리 주요예제 3 (고수준 파일 입출력3)

1. 구조체 파일이 2진 파일로 저장되어 있는 경우에 읽어들여서 화면에 출력하는 프로그램 #include #include #include struct mydata { char name[10]; int clang, vb, tot; double avg; }; int main() { FILE* inp; mydata person; //파일 쓰기 fopen_s(&inp, "bin1.bin", "wb"); if (inp == NULL) { printf("파일을 열 수 없습니다. \n"); return 0; } strcpy_s(person.name, 10, "son"); person.clang = 10; person.vb = 13; person.tot = person.clang + person.vb; person.a..

C언어 이론 12. 파일처리(고수준의 파일 입출력 3. 블럭 단위 입출력 등)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. fread()/ fwrite() // 블럭 단위 파일 입출력 함수 ① 텍스트 형식 입출력 함수는 쉽고 유용하지만 부수적인 데이터 변환을 수행해야 하므로 효율적인 방법은 아니다. ② 또한 데이터 크기에서도 텍스트 파일은 이진 파일에 비해 큰편이다. ③ 이진 파일은 저장된 데이터를 확인하기는 어렵지만 속도와 크기면에서 훨씬 유리하다. ④ 원형 int fread (char* buffer, int size, int n, FILE* fp); int fwrite(char* buffer, int size, int n, FILE* fp); ⑤ fread(buffer,size,n,fp)는 파일 포인터 fp가..

volatile 변수

주로 메모리 맵 입출력(MMIO)을 제어할 때, volatile을 선언한 변수를 사용하여 컴파일러의 최적화를 못하게 하는 역할을 한다.static int foo; void bar(void) { foo = 0; while (foo != 255); } foo의 값의 초기값이 0 이후, while 루프 안에서 foo의 값이 변하지 않기 때문에 while의 조건은 항상 true가 나온다. 따라서 컴파일러는 다음과 같이 최적화한다.void bar_optimized(void) { foo = 0; while (true); } 이렇게 되면 while의 무한 루프에 빠지게 된다. 이런 최적화를 방지하기 위해 다음과 같이 volatile을 사용한다.static volatile int foo; void bar (void) ..

C언어 이론 12. 파일처리(고수준의 파일 입출력 2. 텍스트 입출력함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. getc(), fgetc() / putc(), fputc() //한 문자를 입출력하는 함수 ① 원형 int getc(FILE* _Stream); int putc(int _Character, FILE* _Steream); int fgetc(FILE* _Stream); int fputc(int _Character, FILE* _Stream); ② getc(FP)는 지정한 스트림으로부터 한 문자를 읽어드리고, FP를 1증가시킨다. ③ getc(stdin)은 키보드로부터 한 문자를 읽어들이고, getc(FP)는 FP가 가리키는 파일 스트림으로부터 한 글자를 읽어들인다. ④ getc(FP)의 FP가 ..

C언어 이론 12. 파일처리 (고수준의 파일 입출력 1. 열고닫기)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일 열고 닫기 ① 파일에 데이터를 입출력하려면 제일 먼저 파일을 열어서 실행중인 프로그램과 파일간의 스트림을 연결해야한다. ② 파일을 열고 작업이 끝나면 파일을 닫아 스트림을 닫아주어야 작업이 파일에 저장된다. ③ 고수준의 입출력에서는 이 스트림을 FP(파일포인터)로 관리한다. ④ 고수준의 입출력에서 파일을 여는 함수는 fopen_s()이고 닫는 함수는 fclose()이다. ⑤ fopen()의 경우 파일을 열고 FP값을 반환값으로 주기 때문에 이를 저장하지 않는 실수를 할 수도 있었지만, fopen_s()의 경우 FP값을 첫번째 인자로 요구하기 때문에 그럴수가 없다. Ⅱ. fopen_s()..

C언어 이론 12. 파일처리 (기본, 스트림, 고수준의 파일 입출력 함수들)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일처리 기본 ① '파일'이란 '프로그램을 처리하는데 사용되는 입출력 장치에 적용되는 논리적 개념'이다. ② '파일'은 '디스크에 정보가 저장되는 단위'이며 고유의 이름을 가진다. ③ C언어는 파일 입출력 방식으로 고수준과 저수준 두가지를 지원한다. 둘의 차이점은 다음과 같다. 고수준 저수준 버퍼 사용 사용 메모리로 직접 읽어들임 입출력 대상 스트림 파일 핸들 속도 느리다. 빠르다. 문자 단위 입출력 가능 가능하지만 비효율적이다. 세밀한 조작 어렵다. 가능하다. 난이도 비교적 쉽다. 조금 어렵다. ④ 두 방식의 가장 큰 차이점은 버퍼의 사용 유무이며 나머지는 이에 따라 파생되는 특성들이다. ..

반응형