본문 바로가기
반응형

2016/0920

2016-09-29_조재찬_스터디일지_CPP-'상속'의 기본 개념, 핸들러 클래스 상속(Inheritance) 상속에 대한 과거의 관점 : 기존에 정의해놓은 클래스의 재활용을 만들어진 문법적 요소 하지만 상속은 위와 같이 한 문장으로 정의할 수 있는 것이 아니며, 상속의 이점이 재활용에만 있는 것은 아니다. 데이터의 성격을 지닌 클래스 정의 급여관리 시스템에서 직원의 이름과 급여정보를 저장할 수 있는 클래스 정의 123456789101112131415161718192021class PermanentWorker{private: char name[100]; int salary;public: PermanentWorker(char* name, int money) : salary(money) { strcpy(this->name, name); } int GetPay() const { return.. 2016. 9. 30.
2016-09-29_조재찬_스터디일지_CPP-const, friend, static, mutable 선언 const 객체와 const 객체의 특성들 변수를 상수화 하듯이, 객체도 상수화 가능하다. const SoSimple sim(20); 객체에 const 선언이 붙으면, 이 객체를 대상으로는 const 멤버함수만 호출이 가능하다. (객체의 데이터 변경을 허용하지 않음) 아래 예제에서 const객체 sim의 멤버 함수 AddNum을 호출하려고 할 때, 호출이 불가능함을 확인할 수 있다. 1 num: 20 const와 함수 오버로딩 함수의 오버로딩이 성립하려면 매개변수 수나 자료형이 달라야 한다. 그 외에 const 선언 유무도 함수 오버로딩의 조건에 해당된다. void SimpleFunc() { . . . . } void SimpleFunc() const { . . . . } 1 2 3 4 SimpleFun.. 2016. 9. 29.
2016-09-28_조재찬_스터디일지_CPP-복사 생성자, 얕은 복사와 깊은 복사, 임시 객체 C++ 스타일의 초기화int num(20);// num=20;int &ref(num);// &ref=num; SoSimple sim2=sim1;바로 위 문장은,다음 문장과도 동일하게 해석된다.SoSimple sim2(sim1); 객체 단위의 대입은 멤버 대 멤버의 복사가 일어난다. 이는 복사 생성자의 정의에 따라 달라질 수 있다. 복사 생성자가 정의되지 않은 SoSimple 클래스123456789class SoSimple{private: int num;public: SoSimple(int n) : num(n) { } . . . .};cs 복사 생성자를 정의하지 않으면, 멤버 대 멤버 복사가 이뤄지는default 복사 생성자가 아래와 같이 자동 삽입된다. (8-9행)12345678910class SoSim.. 2016. 9. 28.
2016-09-27_조재찬_스터디일지_CPP-객체 배열과 this포인터, Self-Ref. 객체 배열 : 객체를 기반으로 객체 배열의 선언이 가능하다. 클래스 이름이 SoSimple일 때, 객체 기반의 배열을 다음과 같이 선언한다. SoSimple arr[10]; 동적 할당 SoSimple * ptrArr = new SoSimple[10]; 이러한 형태의 배열 선언은, 열개의 SoSimple 객체가 모여서 배열을 구성하는 형태이다. 이 경우에도 생성자는 호출이 되나, 배열 선언과정에서는 호출할 생성자를 별도로 명시하지 못한다. (생성자에 인자를 전달하지 못함) 위와 같이 객체 기반 배열이 생성되려면 다음 형태의 생성자가 반드시 정의되야 하낟. So Simple() { . . . .} #include // c의 string 함수 include 1 2 3 4 5 6 7 8 9 10 11 12 13.. 2016. 9. 27.
2016-09-26_조재찬_스터디일지_CPP-생성자와 소멸자 생성자 (constructor): 클래스의 이름과 동일한 이름의 함수이면서,반환형이 선언되지 않았고 실제 반환하지 않는 함수가 생성자 생성자는 객체 생성시 멤버변수의 초기화에 사용가능 (객체 생성시 생성자가 딱 한번 호출) - 위에서 생성자가 정의되었으니 객체 생성과정에서 자동호출되는 생성자에게 전달할 인자의 정보를 추가 SimpleClass sc(20)// 생성자에 20 전달 (stack 할당)SimpleClass * ptr = new SimpleClass(30); // (heap에 동적 할당) 생성자도 오버로딩과 매개변수의 default값 설정이 가능하다. 생성자의 오버로딩1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .. 2016. 9. 26.
2016-09-25_조재찬_스터디일지_CPP-정보은닉, const함수, 캡슐화 정보 은닉 (Information): 클래스의 멤버변수를 private로 선언, 해당 변수에 접근하는 함수를 별도로 정의해, 안전한 형태로 멤버 변수의 접근을 유도한다. Point 클래스의 정보은닉12345678910111213class Point{private: int x; int y; public: bool InitMembers(int xpos, int ypos); int GetX() const; int GetY() const; bool SetX(int xpos); bool SetY(int ypos);};Colored by Color Scriptercs8 행 : 벗어난 범위의 값 저장을 막는 초기화 함수9-12 행 : 정보 은닉으로 인해 추가되는 접근(access) 함수들 get은 값을 반환, set.. 2016. 9. 25.
2016-09-23_조재찬_스터디일지_CPP-OOP (객체지향 프로그래밍) Object Oriented Programming (객체지향 프로그래밍) C++은 객체지향 언어 C언어가 절차지향적 언어라면 C++은 객체지향 언어 "나는 과일장수에게 두 개의 사과를 구매했다!" 위 문장에서 object(객체)는 나, 과일장수, 사과 객체를 이루는 것은 데이터와 기능 프로그램상에서 바라보는 과일장수 - 과일장수는 과일을 판다 (행동 behavior) - 과일장수는 사과 20개, 오렌지 10개를 보유 (상태 state) - 과일장수의 판매 수익은 현재 50,00원 (상태 state) 객체는 하나 이상의 상태정보(데이터) + 하나 이상의 행동(기능)으로 구성 상태 정보 : 변수를 통해서 표현(변수에 상태 정보 저장) 행동 : 함수를 통해서 표현 과일 장수의 상태 정보 (변수로 표현하며, 사.. 2016. 9. 23.
2016-09-22_조재찬_스터디일지_CPP-Class C++에서의 구조체 c++에서는 구조체 변수 선언시, struct 키워드의 생략을 위한 typedef 선언 불필요 c의 구조체 변수 초기화 c++에서 구조체 변수 초기화 struct Car basicCar; Car basicCar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 #include using namespace std; #define ID_LEN 20 #define MAX_SPD 200 #define FUEL_STEP .. 2016. 9. 23.
2016-09-21_조재찬_스터디일지_C++기초 3 (bool, reference, new&delete, C 표준함수 호출) 새로운 자료형 bool c++에서 true와 false는 참,거짓 의미하는 1바이트 data1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include using namespace std; int main(void) { int num = 10; int i = 0; cout 2016. 9. 21.
728x90
반응형