[C++] 클래스와 구조체의 비교
2022. 6. 22. 16:22ㆍ코딩 1막 <C++개념편>/코딩 1막 <C++응용편>
728x90
1. <구조체 struct 일때>
#include <iostream>
#include <string>
using namespace std;
struct TravelToWorld
{
string name;
int time;
int money;
TravelToWorld()
{
cout << "(struct용) 세계여행 생성자" << endl;
}
TravelToWorld(string _name, int _time, int _money)
{
name = _name;
time = _time;
money = _money;
cout << name << "(struct용) 세계여행 생성자" << endl;
}
~TravelToWorld()
{
cout << name << "(struct용) 세계여행 소멸자" << endl;
}
};
void main()
{
TravelToWorld travelToWorldA("한국", 10, 10000);
cout << travelToWorldA.name << endl;
TravelToWorld* travelToWorldB;
travelToWorldB = new TravelToWorld("일본", 20, 50000);
cout << travelToWorldB->name << endl;
delete travelToWorldB;
}
2. <클래스 class일때>
#include <iostream>
#include <string>
using namespace std;
// 클래스
class TravelToWorld
{
private: // 이 아래로는 이 클래스 내부 전용입니다
public: // 이 아래로는 외부에서도 참조할수 있게 열려진 영역입니다
string name;
int time;
int money;
TravelToWorld()
{
cout << "(class용) 세계여행 생성자" << endl;
}
TravelToWorld(string _name, int _time, int _money)
{
name = _name;
time = _time;
money = _money;
cout << name << "(class용) 세계여행 생성자" << endl;
}
~TravelToWorld()
{
cout << name << "(class용) 세계여행 소멸자" << endl;
}
};
void main()
{
TravelToWorld travelToWorldA("한국", 10, 10000);
cout << travelToWorldA.name << endl;
TravelToWorld* travelToWorldB;
travelToWorldB = new TravelToWorld("일본", 20, 50000);
cout << travelToWorldB->name << endl;
delete travelToWorldB;
}
3. <접근제한자 private, protected, public>
#include <iostream>
#include <string>
using namespace std;
class TravelToWorld
{
// 접근제한자 public과 private
private: // 상속불가능, 이 아래로는 이 클래스 내부전용 영역
protected: //이 아래로는 선심써서 자식까지는 참조할 수 있는 영역
string name;
int time;
int money;
public: // 상속가능, 이 아래로는 외부에서도 참조할수 있게 알려진 영역
void virtual PrintInfo()
{
cout << "정보출력" << endl;
cout << "이름 : " << name << " / " << "시간 : " << time << "시간 / " << "경비 : " << money << "원" << endl;
}
TravelToWorld() {}
TravelToWorld(string _name, int _time, int _money)
{
name = _name;
time = _time;
money = _money;
}
~TravelToWorld() {}
};
class Japan : public TravelToWorld
{
private:
bool isGo = false;
public:
Japan() {}
Japan(string _name, int _time, int _money, bool _isGo) : TravelToWorld(_name, _time, _money)
{
isGo = false;
}
void PrintInfo()
{
cout << "정보출력" << endl;
cout << "Japan클래스는 부모의 개인적인 영역인 멤버변수들을 참조할 수 없다" << endl;
}
void Go()
{
cout << "가즈아" << endl;
}
};
void main()
{
TravelToWorld travelToWorldA("일본", 10, 10000);
Japan japanA;
TravelToWorld* travelToWorldPtr;
travelToWorldPtr = &japanA;
travelToWorldPtr->PrintInfo();
japanA.Go();
japanA.PrintInfo();
travelToWorldA.PrintInfo();
}
728x90
'코딩 1막 <C++개념편> > 코딩 1막 <C++응용편>' 카테고리의 다른 글
[C++] 큐와 스택 만들기(자료구조 헬 입성) (0) | 2022.06.23 |
---|---|
[C++] 플레이어 클래스를 만들고, 게터와 세터 생성하기 (0) | 2022.06.22 |
[C++] 추리게임 오프닝 만들기 (0) | 2022.06.16 |
[C++] 게임 오프닝 만들기 (0) | 2022.06.16 |
[C++] 상호참조를 할만한 두 구조체를 만들고 선언부와 구현부를 분리해보자 (0) | 2022.06.16 |