MFC공부를 시작하기 앞서 강희경이 C++과 객체지향에 대한 내용을 설명하기 위해 만든 페이지 입니다.
1. 클래스 연습 ¶
~cpp #include<iostream> using namespace std; class student { private: char Name[20]; //이름 int ID; //학번 int Math; //수학성적 int Korean; //국어성적 int English; //영어성적 public: student(); //디폴트 생성자 student(char *name, int id, int math, int kor, int eng);//생성자 ~student(); //소멸자 int getTotal(); //총점을 구하는 함수 void outputID(); //학번, 이름 출력 int getMath(); //수학점수에 접근 int getKor(); //국어점수에 접근 int getEng(); //영어점수에 접근 }; student::student() { } student::student(char *name, int id, int math, int kor, int eng) { strcpy(Name, name); //이름초기화(카피) ID = id; //학번초기화 Math = math; //수학점수초기화 Korean= kor; //국어점수초기화 English = eng; //영어점수초기화 } student::~student() { } int student::getTotal() { return Math + Korean + English;//총점리턴 } void student::outputID() { cout << ID << " " << Name << endl;//학번과 이름 출력 } int student::getMath() { return Math; //수학점수리턴 } int student::getKor() { return Korean; //국어점수리턴 } int student::getEng() { return English; //영어점수리턴 } void main() { int Max; int bestStu; int i; const int numberOfStudent = 10;//학생 수 student stu[numberOfStudent] = {student("KangHeeKyoung", 953, 99, 99, 99), student("KimSooJin", 954, 55, 100, 12), student("ParkJinHa", 955, 66, 87, 11), student("ParkJinYoung", 956, 11, 23, 54), student("KimTaeHyuk", 957, 10, 9, 4), student("LeeChunSoo", 958, 100, 40, 19), student("AnJaeHyun", 959, 0, 0, 0), student("ByunJoonWon", 960, 2, 3, 1), student("SinJaeDong", 961, 1, 2, 100), student("NoSooMin", 963, 0, 4, 1)};//객체 배열 생성 및 초기화 Max = 0; for(i = 0; i < numberOfStudent; i++) { if(stu[i].getTotal() > Max) { bestStu = i; Max = stu[i].getTotal(); } } //최대값과 최대값을 가진 객체를 찾는다. cout << "전체수석: "; stu[bestStu].outputID(); //학번, 이름 출력 Max = 0; for(i = 0; i < numberOfStudent; i++) { if(stu[i].getMath() > Max) { bestStu = i; Max = stu[i].getMath(); } } cout << "수학수석: "; stu[bestStu].outputID(); Max = 0; for(i = 0; i < numberOfStudent; i++) { if(stu[i].getKor() > Max) { bestStu = i; Max = stu[i].getKor(); } } cout << "국어수석: "; stu[bestStu].outputID(); Max = 0; for(i = 0; i < numberOfStudent; i++) { if(stu[i].getEng() > Max) { bestStu = i; Max = stu[i].getEng(); } } cout << "수학수석: "; stu[bestStu].outputID(); }
1.1. 콘스트와 스태틱 ¶
~cpp #include<iostream.h> void output(int a); void main() { const int b = 10; output(5); b--; cout << b <<endl; } void output(int a) { for(int i = 0; i < a; i++) { cout << "천재" << endl; } }
2. 포인터 ¶
~cpp #include<iostream.h> void main() { char c; char *pc = &c; c = 'y'; cout << *pc << endl; cout << c << endl; }
배열포인터
~cpp #include<iostream.h> void main() { char array[3]; char *pa; pa = array; //&array[0] *pa = 'a'; *(pa + 1) = 'b'; *(pa + 2) = 'c'; for(int i = 0; i < 3; i++) cout << array[i] << endl; }
포인터++
~cpp #include<iostream.h> void main() { char array[3]; char *pa; pa = array; //&array[0] for(int i = 65; i < 68; i++) *(pa++) = i; for(i = 0; i < 3; i++) cout << *(--pa) << endl; }
포인터 배열
~cpp #include<iostream.h> void main() { char array[3]; char *pa[3]; //pa = array; //&array[0] for(int i = 0; i < 3; i++) pa[i] = &array[i]; for(i = 0; i < 3; i++) *pa[i] = i+65; for(i = 0; i < 3; i++) cout << array[i] << endl; }
구조체 포인터
~cpp #include<iostream.h> struct node { char data; node *link; }; void main() { node type1; type1.data = 'a'; node type2; type2.data = 'b'; type1.link = &type2; type2.link = NULL; cout << (*(type1.link)).data << endl; }
링크드 리스트 예제
~cpp #include<iostream> using namespace std; struct Node { char data; Node* link; }; void main() { Node array[100]; Node* pNode; int index = 0; char input; do{ cout << "숫자: "; cin >> input; if(input != 'q') { if(index == 0){ array[0].data = input; array[0].link = NULL; } else { array[index].data = input; array[index].link = NULL; array[index-1].link = &array[index]; } index++; pNode = array; while(pNode != NULL) { cout << pNode->data << " "; pNode = pNode->link; } cout << "NULL" << endl; } }while(input != 'q'); }