일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- timetimermod
- 서버 터짐
- PnP
- 다중적분
- 교류직류
- 꿀팁
- 유튜브 에러
- npn
- 일대일변환
- timetimer
- 유튜브 서버
- 펠리칸만년필
- 필사용 만년필
- 필사
- inhaler
- 부분인쇄
- MOD
- 유튜브 서버 터짐
- 일대일대응
- Transistor
- 읽었던 것도 다정리해놔야겠다.
- 언젠가 나도 내집을 꾸미겠지.
- 미술관 가고싶다.
- 본명조와 본고딕 글씨체가 맘에 들어요.
- 유튜브 먹통
- icecreamsundae
- Pelican
- 내돈
- 변수변환
- AC DC
Archives
Woooniverse
[C++]상속 클래스의 기본생성자는 어떻게 해야될까? 본문
#include<iostream>
#include <string>
using namespace std;
class Printer {
private:
string model, printer, person;
public:
Printer(string _model = "d_model", string _printer = "d_printer", string _person = "d_person") :
model(_model), printer(_printer), person(_person)
{
}
virtual void printInfo()
{
cout << model << endl << printer << endl << person << endl;
}
};
class LaserPrinter: public Printer {
private:
int LaserPower;
int serial_number;
public:
LaserPrinter(string _model = "d_model", string _printer = "요건몰랐지", string _person = "d_person", int _l_power=0, int _serialnumber=123456) :
Printer(_model, _printer, _person)
{
LaserPower = _l_power;
serial_number = _serialnumber;
}
void printInfo()override
{
Printer::printInfo();
cout << LaserPower << endl << serial_number;
}
};
int main()
{
Printer Base;
LaserPrinter me;
Base.printInfo();
me.printInfo();
}
요런 식으로 상속클래스에서도 초기화값을 넣어줘야되는건 좀 귀찮네,,,?
근뎅 이래야 에러가 안나고 나중에 편하다.
위 방법이 직관적으로 통일되어서 좋은데 나는 상속클래스에서 초기화 또해주는게 넘나 귀찮다? 그럼 아래처럼 해라
위보다 통일적으로 이쁘진 않다. 왜냐하면
#include<iostream>
#include <string>
using namespace std;
class Printer {
private:
string model, printer, person;
public:
Printer(string _model, string _printer , string _person) :
model(_model), printer(_printer), person(_person)
{
}
Printer()
{
model = "d_model"; printer = "d_printer"; person = "d_person";
}
virtual void printInfo()
{
cout << model << endl << printer << endl << person << endl;
}
};
class LaserPrinter: public Printer {
private:
int LaserPower;
int serial_number;
public:
LaserPrinter(string _model , string _printer , string _person, int _l_power, int _serialnumber) :
Printer(_model, _printer, _person)
{
LaserPower = _l_power;// 요기서 부여해주고
serial_number = _serialnumber;// 요기서도
}
LaserPrinter()
{
LaserPower = 123; //요기선 초기화를
serial_number = 123456; //위처럼 딱 통일된 문법은 아니고 자식한테 이거저거 추가해주는 느김
}
void printInfo()override
{
Printer::printInfo();
cout << LaserPower << endl << serial_number;
}
};
int main()
{
Printer Base;
LaserPrinter me;
Base.printInfo();
me.printInfo();
}
구글에 찾아도 안나와서 내가 돌려가며 검증했다.
참고로 위 아래 기법을 교차로 써도 돌아는 간다. 만 하지말자 ㅎㅎ
'공부 > C++' 카테고리의 다른 글
[C/C++] const 의 위치별 역할 (0) | 2021.07.12 |
---|---|
[C/C++]함수의 반환형에 &가 들어가는 경우 (0) | 2021.07.11 |
[C++]템플릿 클래스와 생성자 (0) | 2021.07.08 |
[C++] 오퍼레이터 함수의 리턴값은 원래 값에 영향을 못준다. (0) | 2021.07.06 |
Comments