25. [C++] 상속의 문법적인 이해
2024. 4. 15. 16:56ㆍ[C++]/C++ 언어 기초
실습 문제
문제 1. 다음 클래스에 적절한 생성자를 삽입하고, 확인을 위한 main 함수를 적절히 정의해보자.
#include <iostream>
using namespace std;
class Car
{ //기본 연료 자동차
private:
int gasolineGauge;
public:
int GetGasGauge()
{
return gasolineGauge;
}
};
class HybridCar: public Car
{ //하이브리드 자동차
private:
int electricGauge;
public:
int GetElecGuage()
{
return electricGauge;
}
};
class HybridWaterCar: public HybridCar
{ //하이브리드 수중차
private:
int waterGuage;
public:
void ShowCurrentGuage()
{
cout<<"잔여 가솔린: "<<GetGasGauge()<<endl;
cout<<"잔여 전기량: "<<GetElecGuage()<<endl;
cout<<"잔여 워터량: "<<waterGuage<<endl;
}
};
풀이
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
class Car
{ //기본 연료 자동차
private:
int gasolineGauge;
public:
Car(int mygasolin) : gasolineGauge(mygasolin) {}
int GetGasGauge()
{
return gasolineGauge;
}
};
class HybridCar: public Car
{ //하이브리드 자동차
private:
int electricGauge;
public:
HybridCar(int mygasolin, int myelectric) : Car(mygasolin), electricGauge(myelectric){
}
int GetElecGuage()
{
return electricGauge;
}
};
class HybridWaterCar: public HybridCar
{ //하이브리드 수중차
private:
int waterGuage;
public:
HybridWaterCar(int mygasolin, int myelectric, int mywater):HybridCar(mygasolin, myelectric), waterGuage(mywater){
}
void ShowCurrentGuage()
{
cout<<"잔여 가솔린: "<<GetGasGauge()<<endl;
cout<<"잔여 전기량: "<<GetElecGuage()<<endl;
cout<<"잔여 워터량: "<<waterGuage<<endl;
}
};
int main(){
HybridWaterCar hcar(20, 50, 30);
hcar.ShowCurrentGuage();
return 0;
}
문제 2. 다음 두 클래스에 적절한 생성자와 소멸자를 정의해보자. 그리고 확인을 위한 main 함수를 정의해보자.
#include <iostream>
using namespace std;
class MyFriendInfo
{
private:
char* name;
int age;
public:
void ShowMyFreindInfo()
{
cout<<"이름: "<<name<<endl;
cout<<"나이: "<<age<<endl;
}
};
class MyFriendDetailInfo: public MyFriendInfo
{
private:
char* addr;
char* phone;
public:
void ShowMyFreindDetailInfo()
{
ShowMyFreindInfo();
cout<<"주소: "<<addr<<endl;
cout<<"전화: "<<phone<<endl<<endl;
}
};
풀이
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
class MyFriendInfo
{
private:
char* name;
int age;
public:
MyFriendInfo(char *myname, int myage):age(myage){
name=new char[strlen(myname)+1];
strcpy(name, myname);
}
void ShowMyFreindInfo()
{
cout<<"이름: "<<name<<endl;
cout<<"나이: "<<age<<endl;
}
~MyFriendInfo(){
cout<<"MyFriendInfo 소멸자"<<endl;
delete []name;
}
};
class MyFriendDetailInfo: public MyFriendInfo
{
private:
char* addr;
char* phone;
public:
MyFriendDetailInfo(char *myname, int myage, char *myaddr, char *myphone) : MyFriendInfo(myname, myage){
addr=new char[strlen(myaddr)+1];
phone=new char[strlen(myphone)+1];
strcpy(addr, myaddr);
strcpy(phone, myphone);
}
void ShowMyFreindDetailInfo()
{
ShowMyFreindInfo();
cout<<"주소: "<<addr<<endl;
cout<<"전화: "<<phone<<endl<<endl;
}
~MyFriendDetailInfo(){
cout<<"MyFriendDetail 소멸자"<<endl;
delete []addr;
delete []phone;
}
};
int main(){
MyFriendDetailInfo myinfo("주주", 28, "경기도 파파시", "010-1234-5678");
myinfo.ShowMyFreindDetailInfo();
return 0;
}
반응형
'[C++] > C++ 언어 기초' 카테고리의 다른 글
은행계좌프로그램 실습 5단계 (0) | 2024.04.16 |
---|---|
27. [C++] 상속을 위한 조건 (0) | 2024.04.15 |
은행계좌프로그램 실습 4단계 (0) | 2024.04.15 |
은행계좌프로그램 실습 3단계 (0) | 2024.04.15 |
20. [C++] 복사 생성자의 호출시점 (0) | 2024.04.15 |