IT 프로그래밍/객체지향프로그래밍

[8.3] 생성자 c++

기술1 2024. 5. 15. 14:28
반응형

 

 

 

#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를 못하기 때문입니다.

 

 

 

반응형