따라하자 씹어먹는 C++
==
으로 만 문자열 비교를 할 수 있게 됐다.클래스를 만들때 비슷한 클래스를 만들일이 생긴다.
하드코딩을 하게 되면 클래스를 그냥 복사해서 비슷하게 쓰면된다.
근데 우리는 경험상 하드코딩은 결국 골아픈 결과를 낳는것을 알고있다.
기반 클래스
class Base{
std::string s;
public:
Base() : s("기반){
std::cout << "기반클래스"<< std::endl;
}
void what(){ std::cout << s << std::endl;}
}
위의 기반클래스를 상속받아보자.
파생 클래스
class Derived : public Base{
std::string s;
public:
Derived() : Base(), s("파생"){
/*
Base 에서 what()을 물려받았으니,
Derived 에서도 당연히 호출 가능
*/
what()
}
}
class Derived : public Base
라는 것을 먼저 보자.위의 기반, 파생클래스의 모양은 이렇다
위의 코드를 기반으로 main문을 짜서 결과를 보면 이렇다.
int main() {
std::cout << " === 기반 클래스 생성 ===" << std::endl;
Base p;
std::cout << " === 파생 클래스 생성 ===" << std::endl;
Derived c;
return 0;
}
오버라이딩
이라고 합니다.오버로딩
은 같은 이름의 함수를 사용하며, 매개변수를 달리하여 여러가지 함수로 만드는 것 이고,오버라이딩
은 그냥 덮어쓰기입니다.클래스를 상속 받는다 해도, 파생클래스가 기반클래스의 private 변수를 건들 수 없습니다.
하지만 protected 변수는 파생클래스도 건들 수 있습니다.
씹어먹는C++ 설명이 아주 찰져서 긁어왔습니다.
구분 | 설명 |
---|---|
private | (부모님한테도 안알려주는)나만의 비밀번호 |
protected | 집현관문 번호(가족들은 아는데 이외사람들 접근불가) |
public | 누구나 접근가능 |