실습1 protected 접근 제어 속성 예시
실습2 상속 심화
#include <iostream>
using std::cout;
using std::endl;
class A1 // 아버지
{
int a;
public:
A1(int i) { a = i; }
int getA() { return a; }
};
class A2 // 어머니
{
int b;
public:
A2(int i) { b = i; }
int getB() { return b; }
};
class B :public A1, public A2
{
// 기본 클래스 A1과 A2로부터
// 상속 받은 파생 클래스
int c;
public:
B(int i, int j, int k) :A1(i), A2(j) { c = k; }
// i는 기본클래스 A1의 생성자로,
// j는 기본클래스 A2의 생성자로
// 각각 매개변수 전달
void show() {
cout << getA() << ' ' << getB() << ' ' << c << endl;
}
};
int main()
{
B bb(1, 2, 3);
bb.show();
return 0;
}
#include <iostream>
using std::cout;
using std::endl;
class B1 { //아버지
double d;
public:
B1(double dd) { d = dd; }
double getD() { return d; }
};
class B2 { //어머니
int i;
public:
B2(int ii) { i = ii; }
int getI() { return i; }
};
class D :public B1, public B2 {
char c;
public:
D(double dd, int ii, char cc) :B1(dd), B2(ii)
{
c = cc;
}
void print() {
cout << "Double : " << getD() << endl;
cout << "Int : " << getI() << endl;
cout << "Char : " << c << endl;
}
};
int main()
{
D d(1.23, 10, 'H');
cout << d.getD() << ',' << d.getI() << endl;
d.print();
return 0;
}
#include <iostream>
using std::cout;
class A1 // 기본 클래스 1
{
int a;
public:
A1() { cout << "A1의 생성자.\n"; }
~A1() { cout << "A1의 소멸자.\n"; }
};
class A2 // 기본 클래스 2
{
int b;
public:
A2() { cout << "A2의 생성자.\n"; }
~A2() { cout << "A2의 소멸자.\n"; }
};
class B : public A2, public A1
// 기본 클래스 1과 2로부터
// 상속 받은 파생 클래스
{
int c;
public:
B() { cout << "B의 생성자.\n"; }
~B() { cout << "B의 소멸자.\n"; }
};
int main()
{
B bb;
return 0;
}
#include <iostream>
using std::cout;
#include <string>
class Name { //기본 클래스는 이름만 처리
std::string name;
public:
void get_name(std::string s) { name = s; }
void print_name() { cout << name << "의 전화번호는"; }
};
class Phone : public Name { //파생클래스는 전화번호처리
std::string phone;
public:
void get_phone(std::string s) { phone = s; }
void print_phone() {
print_name();
cout << phone;
}
};
int main()
{
Phone h;
h.get_name("Smile Han");
h.get_phone("1234-5678");
h.print_phone();
return 0;
}
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class Man {
string name; //private 자동으로 만들어짐
int age;
public:
Man(string name, int age) {
this -> name = name;
this -> age = age;
}
void m_show();
};
void Man::m_show() {
cout << "이름: " << name << endl;
cout << "나이: " << age << endl;
}
Man (사람 이름, 나이 멤버 변수) 클래스 완성
Man 부모 클래스와 자식 클래스(Student와 Teacher) 완성
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class Man {
string name; //private 자동으로 만들어짐
int age;
public:
Man(string name, int age) {
this -> name = name;
this -> age = age;
}
void m_show();
};
void Man::m_show() {
cout << "이름: " << name << endl;
cout << "나이: " << age << endl;
}
class Student:public Man{
string ban;
string hak;
public:
Student(string name, int age, string ban, string hak) : Man(name,age){ // 생성자 생성
this->ban = ban;
this->hak = hak;
}
void s_show();
};
void Student::s_show() {
m_show();
cout << "반: " << ban << endl;
cout << "학번: " << hak << endl;
}
class Teacher :public Man {
string major;
string subject;
public:
Teacher(string name, int age, string m, string s) : Man(name, age){ // 생성자 생성
major = m;
subject = s;
}
void t_show();
};
void Teacher:: t_show() {
m_show();
cout << "전공: " << major << endl;
cout << "담당과목: " << subject << endl;
}
int main()
{
Student kks("김컴소", 20, "C반", "202012000");
Teacher hsh("한미소", 40, "전산", "C++프로그래밍");
kks.s_show();
hsh.t_show();
return 0;
}
실습3 클래스 다이어 그램
실습4 OverRiding(가상함수 : virtual function)
#include <iostream>
using std::cout;
class Dot {
public:
virtual void draw() {
cout << "Dot::draw()\n";
}
void print() {
cout << "Dot 클래스\n";
draw();
}
};
class Line : public Dot {
public:
void draw() override {
cout << "Line::draw()\n";
}
};
int main() {
Line line;
line.print();
return 0;
}
virtual은 부모클래스에 사용하고
자식 클래스에서는 안써도 되고 쓰게 된다면 void draw() 하고 이 부분에 override라고 해야함{cout<<"Line::draw()\n";}
이 방법은 c++2011부터 시작한 새로운 키워드임.
'C++' 카테고리의 다른 글
C++ 15주차 (0) | 2023.12.14 |
---|---|
C++ 14주차 (0) | 2023.12.07 |
C++프로그래밍 12주차 (0) | 2023.11.23 |
C++ 프로그래밍 11주차 (0) | 2023.11.16 |
C++ 10주차 (1) | 2023.11.09 |