without haste but without rest
[C++] 생성자 본문
0. 생성자
C++ 에서는 생성자(Constructor)를 이용해서 객체를 생성과 동시에 멤머 변수를 초기화할 수 있다. (자바에서 쓰던 그 생성자가 맞다.)
1. 생성자 예제 코드
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int age;
int absent;
public:
Student(string name, int age) {
this->name = name;
this->age = 20;
this->absent = 0; // 결석횟수는 인스턴스 생성시 0부터 시작
}
void show() {
cout << name << ", " << absent;
}
};
int main(void) {
Student s = Student("Jack", 20);
s.show();
}
축약형
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int age;
int absent;
public:
Student(string name, int age) : name(name), age(age), absent(0) {}
void show() {
cout << name << ", " << absent;
}
};
int main(void) {
Student s = Student("Jack", 20);
s.show();
}
2. 복사 생성자
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int age;
int absent;
public:
Student(string name, int age) : name(name), age(age), absent(0) {}
Student(const Student& other) { // 복사 생성자 선언
name = other.name;
age = other.age;
absent = other.absent;
}
void absentUp() { absent++; }
void show() {
cout << name << ", " << absent << endl;
}
};
int main(void) {
Student s = Student("Jack", 20);
s.absentUp();
Student s2(s);
s2.absentUp();
s.show();
s2.show();
}
* 복사 생성자는 다른 인스턴스의 참조를 인수로 받는다. 이 참조를 이용해서 자신의 인스턴스를 초기화한다.
* 즉 매개변수로 받는 인스턴스의 속성은 그대로 가져와 사용하되, 매개변수로 받은 인스턴스와는 다른 메모리에 할당되어 독립적이다.
'ProgrammingLanguage > C++' 카테고리의 다른 글
[C++] 소멸자 (0) | 2020.03.02 |
---|---|
[C++] 클래스 (0) | 2020.03.02 |
[C++] 튜토리얼 (0) | 2020.03.02 |
Comments