반응형
#include <iostream>
using namespace std;
class Fraction
{
private:
int m_numerator;
int m_denominator;
public:
Fraction()
{
m_numerator = 0;
m_denominator = 1;
}
void print()
{
cout << m_numerator << " / " << m_denominator << endl;
}
};
int main()
{
Fraction frac;
frac.print();
return 0;
}
반환 name이 없고 class와 이름이 같은 것은 생성자입니다. 외부에서 호출하려고 쓰려는 것이 아닌 어떤 변수를 만들 때 해당 변수의 값을 지정하고 싶을 때 이런 식으로 해주는 것입니다.
생성자 안에서 numerator의 값을 바꾸면 편하게 바꿔줄 수 있는 것입니다.
#include <iostream>
using namespace std;
class Fraction
{
private:
int m_numerator;
int m_denominator;
public:
Fraction()
{
m_numerator = 0;
m_denominator = 1;
cout << "Fraction() constructor" << endl;
}
void print()
{
cout << m_numerator << " / " << m_denominator << endl;
}
};
int main()
{
Fraction frac;
frac.print();
return 0;
}
이렇게 하면 main 함수의 Fraction frac;에서 Fraction() 생성자로 들어가는 것을 볼 수 있습니다.
하지만 생성자의 parameter 가 하나도 없을 때는 괄호를 빼도록 되어 있습니다. 그래서 Fraction frac; 라고 표현을 하는 것입니다.
Fraction도 함수니깐 매개변수를 넣을 수 있는데요.
Fraction(fconst int& num_in, const int &den_in)
{
m_numerator = num_in;
m_denominator = den_in;
}
이렇게 해준 다음
int main()
{
Fraction ont_thirds(1, 3);
ont_thirds.print();
}
를 해주면 1 / 3이 출력되는 것을 볼 수 있습니다.
생성자가 하나도 없을 때는 default 생성자를 만들어줍니다. 생성자가 아예 없을 때는 instance를 못하기 때문입니다.
반응형
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
[따배시 6.11] 메모리 동적할당 new 와 delete, 메모리누수 (0) | 2024.05.17 |
---|---|
[따배시 8.4] 생성자 멤버 초기화 목록 (0) | 2024.05.15 |
[C++] 백준 4150번 피보나치 수 (0) | 2024.05.15 |
[C++] 캡슐화, 접근지정자, 접근 함수 (0) | 2024.05.14 |
[따배시 c++ 8.1] 객체지향 프로그래밍과 클래스 (0) | 2024.05.14 |