728x90
멤버 이니셜라이저 (Member initializer)
: 만듦과 동시에 초기화
#include <iostream>
using namespace std;
class AAA {
private:
int num;
public:
AAA(int a) :num(10) {} //:=초기화
void show_num() {
cout << "num 변수값= " << num << endl;
}
};
int main() {
AAA aaa(10);
aaa.show_num();
return 0;
}
초기화 하고 잘 들어감
생성자 대입
#include <iostream>
using namespace std;
class AAA {
private:
int num;
public:
AAA(int a) {
num = a;
}
void show_num() {
cout << "num 변수값= " << num << endl;
}
};
int main() {
AAA aaa(30);
aaa.show_num();
return 0;
}
const 맴버일때 initialize
#include <iostream>
using namespace std;
class AAA {
private:
const int num;
//클래스내의 멤버 변수에 const는 고정되어있음
//새로운 값을 생성자 함수로 대입할 수 없다
//이미 객체가 생성되었을때 쓰레기값으로 초기화되어있음
public:
AAA(int a) :num(a) {} //:=초기화
void show_num() {
cout << "num 변수값= " << num << endl;
}
};
int main() {
AAA aaa(30);
aaa.show_num();
return 0;
}
생성 필요없이 바로초기화
초기화 안하면 일어나는일
#include <iostream>
using namespace std;
class Time {
public:
int h;
int m;
int s;
Time() {
h = 0;
m = 0;
s = 0;
}
Time(int _h) {
h = _h;
}
Time(int _h, int _m) {
h = _h;
m = _m;
}
Time(int _h, int _m, int _s) {
h = _h;
m = _m;
s = _s;
}
void showTime() {
cout << h << "hour:" << m << "minute:" << s << "seconds" << endl;
}
};
int main() {
//생성자 함수 내에서 시:분:초 값 0으로 대입
Time t1;
t1.showTime();
//시간만 입력 >생성자 함수
Time t2(3);
t2.showTime();
//시, 분만 입력> 생성자함수
Time t3(5, 16);
t3.showTime();
//시,분,초만 입력 >생성자함수
Time t4(1, 30, 40);
t4.showTime();
}
#include <iostream>
using namespace std;
class Time {
public:
int h;
int m;
int s;
/*Time() {
h = 0;
m = 0;
s = 0;
}*/
Time() :h(0), m(0), s(0) {}//초기화 하는걸 넣어줌
Time(int _h) : Time()
{
h = _h;
}
Time(int _h, int _m) : Time(_h)
{
m = _m;
}
Time(int _h, int _m, int _s) : Time(_h,_m)
{
s = _s;
}
void showTime() {
cout << h << "hour:" << m << "minute:" << s << "seconds" << endl;
}
};
int main() {
//생성자 함수 내에서 시:분:초 값 0으로 대입
Time t1;
t1.showTime();
//시간만 입력 >생성자 함수
Time t2(3);
t2.showTime();
//시, 분만 입력> 생성자함수
Time t3(5, 16);
t3.showTime();
//시,분,초만 입력 >생성자함수
Time t4(1, 30, 40);
t4.showTime();
}
초기화를 해봄
초기화의 중요성
#include <iostream>
using namespace std;
class Time {
public:
int h;
int m;
int s;
Time(int _h, int _m, int _s) {
this->h = _h; //this: 상속개념
this->m = _m;
this->s = _s;
}
//Time(int _h,int _m, int _s):h(_h),m(_m),s(_s){} 로도 표현가능
void showTime() {
cout << h << "hour:" << m << "minute:" << s << "seconds" << endl;
}
};
class TimeTwo : public Time {
public:
TimeTwo(int _h, int _m, int _s) :Time(h, m, s) {}
};
int main() {
Time t1(3, 3, 3);
t1.showTime();
TimeTwo tt1(5, 40, 20);
tt1.showTime();
}
이러면 ㅅㅅ2에 쓰레기값 들어감
#include <iostream>
using namespace std;
class Time {
public:
int h;
int m;
int s;
Time(int _h, int _m, int _s) {
this->h = _h; //this: 상속개념
this->m = _m;
this->s = _s;
}
//Time(int _h,int _m, int _s):h(_h),m(_m),s(_s){} 로도 표현가능
void showTime() {
cout << h << "hour:" << m << "minute:" << s << "seconds" << endl;
}
};
class TimeTwo : public Time {
public:
TimeTwo(int _h, int _m, int _s) :Time(8, 8, 8) {}
};
int main() {
Time t1(3, 3, 3);
t1.showTime();
TimeTwo tt1(5, 40, 20);
tt1.showTime();
}
그래서 직접 넣어줘보자
728x90
'언어는 과-학인가요? > C++' 카테고리의 다른 글
동적변수와 정적변수 (0) | 2020.11.21 |
---|---|
Foodgame c++ (0) | 2020.11.14 |
orangebox (0) | 2020.11.14 |
함수로 값바꾸기 (0) | 2020.11.14 |
Protected, Private, Public 함수 : 이동시키기 (0) | 2020.10.31 |