C++

9-1 함수중첩

리버윤 2023. 11. 15. 11:25
728x90

 

- 함수 중첩(funcion overloading) : 하나의 함수명을 여러 개의 유사 목적으로 사용할 수 있다.

  * C의 경우 함수 중첩 불가능

- 컴파일러가 매개변수의 입력 자료형에 따라서 자동적으로 해당 함수를 연결해 준다.

 

  • 함수중첩을 하는 2가지 이유
#include <iostream>
//매개변수의 형이 다른 경우
int add(int i, int j)
{
	return (i + j);
}
float add(float i, float j)
{
	return (i + j);
}
double add(double i, double j)
{
	return (i + j);
}
//매개변수의 개수가 다른경우
int add(int i, int j, int k)
{
	return (i + j + k);
}
int add(int i, int j, int k, int l)
{
	return (i + j + k + l);
}
int main()
{
	std::cout << add(1, 2) << std::endl;
	std::cout << add(1.3f, 2.6f) << std::endl;
	std::cout << add(6.5, 3.8) << std::endl;
	std::cout << add(1, 2, 3) << std::endl;
	std::cout << add(1, 2, 3, 4) << std::endl;

	return 0;
}

 

 

- 생성자 중첩 : 객체에 초기값을 다양하게 주는 선택 기회를 제공하는 것이다.

  • 생성자 함수중첩 예시
#include <iostream>
class Dog {
private:
	int age;
public:
	Dog() { age = 1; } // 매개변수가 없는 생성자, 자동 inline
//	Dog(int a) { age = a; } // 매개변수가 하나인 생성자
	~Dog();
	int getAge();
	void setAge(int a);
};
Dog::~Dog()
{
	std::cout << "소멸";
}
int Dog::getAge()
{
	return age;
}
void Dog::setAge(int a)
{
	age = a;
}
int main()
{
	Dog happy(2), meri;
	std::cout << happy.getAge() << "," << meri.getAge();
	return 0;
}

 

728x90