OOP

TermProject [1]

hololo 2019. 11. 12. 04:11

1. string
C++에는 string이 없다
그러므로 string을 쓰려면 다음과 같이 해야 한다

1
2
3
#include <string>
 
using namespace std;

#include<string>
using namespace std;

2. h, cpp 분리하기
큰 프로그램을 만들 때, h와 cpp를 분리하여 만들면 훨씬...좋댄다...
(아직은 잘 모르겠음...어려워..)
예를 들어, Member의 클래스를 만들 때는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef MEMBER_H
#define MEMBER_H
#pragma once
#include "TimeTable.h"
 
class Member {
private:
    int memberNum;
 
public:
    Member();
    void setTimeTable();
};
 
#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
#include"Member.h"
#include"TimeTable.h"
 
using namespace std;
 
Member::Member(){
    static int number_of_members = 0;
    number_of_members++;
    std::cout << "[" << number_of_members << "]Member is made" << std::endl;
}
 
void Member::setTimeTable() {
    std::cout << "Let's make TimeTable" << std::endl;
    
}
 

위가 Member.h, 아래가 Member.cpp
h에는 간단히 선언만 해주고, cpp에는 상세화하여 코드를 작성하여 완성한다

3. static 변수
위 cpp코드를 보면
static int number_of_members가 있다
하지만, h파일에는 없는데
만약 h파일에 static변수를 선언하면 오류가 난다 (자세한 이유는 다음에)
h파일에 없어도, cpp파일에 작성하면 static이 적힌 코드의 줄은 한번만 실행이 되기에
전역변수로 사용할 수 있다

4. case 안에서 지역변수 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
case 1:
        {
            std::cout << "Create Member ......." << std::endl;
            Member m;
            memExist = 1;
            std::cout << "" << std::endl;
 
            int mkTimeTable = 0;
            std::cout << "Make TimeTable ? ( Yes=1 | No=0 )>> ";
            std::cin >> mkTimeTable;
            if (mkTimeTable == 1) {
                std::cout << "Make TimeTable ......" << std::endl;
                m.setTimeTable();
            }
            else std::cout << "OK......" << std::endl;
            break;
        }//case안에서 지역변수를 생성하려면 중괄호를 사용해야 한다

중괄호로 묶어주지 않으면, 그 밑의 case인 case 2, ...에서 m변수를 생성하지 않았다고 오류가 난다
case 1인 경우에만 m을 생성하고 싶다면 다음과 같이 중괄호로 묶어주어야 한다

5. main밑에 함수 사용하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<string>
#include"Member.h"
#include"TimeTable.h"
 
void memberMenu();
 
 
int main() {
    ~~~
    return 0;
}
 
void memberMenu(){
    ~~~
}
 

main 아래에 함수를 정의할 경우 main보다 위에서 함수를 선언해주어야 한다

-------------------------------------------------
생각보다....오래걸린..것 같다...