본문 바로가기
코딩/C++

c++프로그래밍 1장 입출력 방식, 함수의 오버로딩, 매개변수의 디폴트 값

by rosemarie 2022. 9. 12.
반응형
#include <iostream>
int main(void)
{
	int val1, val2;
	int result = 0;
	std::cout<<"두 개의 숫자입력: ";
	std:: cin >> val1 >> val2;
	if (val1 < val2)
	{
		for (int i = val1 + 1; i < val2; i++)
			result += i;
	}
	else {
		for (int i = val2 + 1; i < val1; i++)
			result += i;
	}
	std::cout << "두 수 사이의 정수 합:" << result << std::endl;
	return 0;

}

1.c++의 모든 컴파일러는 지역변수의 선언 제한을 두지 않는다.

2.연속적인 데이터의 입력 가능

std::cin>>'변수1'>>'변수2'

이때 첫 번째와 두 번째 정수의 경계는 탭, 스페이스 바, enter키의 입력과 같은 공백에 의해 나눠진다.

3. for문의 초기화 문장 내에서 변수 선언이 가능하다.

for(int num = 0; num<10; num++){}

<배열 기반의 문자열 출력>

#include <iostream>
int main(void)
{
	char name[100];
	char lang[200];
	std::cout<<"이름은 무엇입니까? ";
	std::cin >> name;
	std::cout << "좋아하는 프로그래밍 언어는 무엇인가요? ";
	std::cin >> lang;
	std::cout<<"내 이름은 "<<name<<"입니다.\n";
	std::cout << "제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;
	return 0;
}

\n: 갹행의 역할을 한다.

 

<01-2 함수 오버로딩>

함수 오버로딩: 동일한 이름의 함수 정의 허용

<함수 오버로딩의 예>

함수의 오버로딩이 가능하려면 매개변수의 자료형이 다르거나 매개변수의 개수가 달라야 한다.

 

다음은 잘못된 오버로딩 예이다.

void MyFunc(int n){}
int MyFunc(int n){}
#include <iostream>
void MyFunc(void)
{
	std::cout << "MyFunc(void) called" << std::endl;
}
void MyFunc(char c)
{
	std::cout << "MyFunc(char c) called" << std::endl;
}
void MyFunc(int a, int b) {
	std::cout << "MyFunc(int a, int b) called" << std::endl;
}
int main(void) {
	MyFunc();
	MyFunc('A');
	MyFunc(12, 13);
	return 0;
}

<01-3 매개변수와 디폴트 값>

int MyFuncTwo(int num1 = 5, int num2 = 7)
{
	return num1 + num2;
}

"함수 호출 시 인자를 전달하지 않으면 num1에 5가, num2에 7이 전달된 것으로 함"

#include <iostream>
int Adder(int num1 = 1, int num2 = 2)
{
	return num1 + num2;
}
int main(void) {
	std::cout << Adder() << std::endl;
	std::cout << Adder(5) << std::endl;//첫번째 매개변수에 5가 전해짐
	std::cout << Adder(3, 5) << std::endl;
}

<디폴트 값은 함수의 선언 부분에만 표현하면 된다.>

매개변수의 디폴트 값 지정은 함수의 선언부에 위치시킨다.

#include <iostream>
int Adder(int num1 = 1, int num2 = 2); //선언부
int main(void) {
	std::cout << Adder() << std::endl;
	std::cout << Adder(5) << std::endl;//첫번째 매개변수에 5가 전해짐
	std::cout << Adder(3, 5) << std::endl;
	return 0;
}
int Adder(int num1, int num2)//정의부
{
	return num1 + num2;
}

<부분적 디폴트 값 설정>

 일부분만 디폴트 값을 지정할 수 있다.

단, 오른쪽 매개변수의 디폴트 값을 비우는 형태로는 디폴트 값을 지정할 수 없다.

int YourFunc(int num1=3, int num2=5, int num3){}

 

 

따라서 반드시 오른쪽 매개변수의 디폴트 값부터 채워야 한다.(인자를 전달하지 않는 형태의 함수 호출은 컴파일 에러로 이어진다.)

'코딩 > C++' 카테고리의 다른 글

  (0) 2022.11.24
접근 지정자  (0) 2022.11.15
클래스 다이어그램  (0) 2022.11.15
가상 함수  (0) 2022.10.18
c++프로그래밍 1장 인라인 함수, 이름공간  (0) 2022.09.15