반응형

0. 시작하기

 

1. 매개변수의 기본값 ( CPP/F_DefaultValue.cpp )

C++ 역시도 다른 언어와 마찬가지로 매개변수의 기본값을 설정할 수 있습니다.

방법 역시도 동일합니다.

 

아래는 이전에 다루었던 '함수 오버로딩'에 매개변수 기본값을 정해준 코드입니다.

 

#include <iostream>

int func(int x=10){  // 1번 함수
    return x;
}

int func(int x, int y, int z=10){  // 2번 함수
    return x+y+z;
}

int main(void){
    std::cout << func() << std::endl;  // 1번 함수 수행
    std::cout << func(10) << std::endl;  // 1번 함수 수행
    std::cout << func(10, 20) << std::endl;  // 2번 함수 수행
    std::cout << func(10, 20, 30) << std::endl;  // 2번 함수 수행


    return 0;
}

 

실행결과

 

여기서 주의할 부분은 '매개변수 기본값'을 정해줌에 따라서 '함수 오버로딩'의 조건인 '인자에 의한 구분가능성'이 유지되어야 한다는 것입니다.

 

만약 위의 함수에 아래와 같은 함수가 함께있다면 [구분가능성]이 사라져 애러가 발생합니다.

 

int func(int x=10){  // 1번 함수
    return x;
}

int func(int x, int y, int z=10){  // 2번 함수
    return x+y+z;
}

int func(int x, int y=10){  // 오버로딩 규칭 위반
    return x+y;
}

 

 

함수 선언 위치에 따른 기본값 설정 (

코드를 작성할 때, 보통 [함수 선언 -> 메인함수 -> 함수 정의]의 순서로 작성하는 경우가 많습니다.

 

함수의 정의부분이 너무 길게되면 자주 사용되는 메인함수가 최하단으로 밀려나 불편하기 때문이죠.

 

이와 같은경우 매개변수의 기본값 설정은 [함수 선언]부분에 작성합니다.

 

예제 코드를 봐주세요.

 

#include <iostream>

int func(int x=10, int y=10);  // 함수 선언시에 기본값 설정

int main(void){
    std::cout << func() << std::endl;

    return 0;
}

int func(int x, int y){
    return x+y;
}

 

실행결과

 

반응형
반응형

0. 시작하기

 

1. 함수 오버로딩 ( CPP/F_Overloading.cpp )

C++도 다른언어와 마찬가지로 함수와 함수 오버로딩을 제공합니다.

 

오버로딩을 구현하기 위해서의 필수 조건은 동일한 함수명이라 하더라도, 입력하는 인자의 값에 따라 수행할 함수를 구분할 수 있어야합니다.

 

예제를 보면 쉽게 이해가 가능합니다.

 

#include <iostream>

int func(int num){
    return num;
}

int func(int num1, int num2){
    return num1 + num2;
}

int main(void){
    std::cout << func(10) << std::endl;
    std::cout << func(10, 10) << std::endl;

    return 0;
}

실행결과

 

보통의 경우 유사한 기능을 하는 함수에 동일한 이름을 주어 함수 오버로딩을 구현합니다.

반응형
반응형

0. 시작하기

 

1. 확장자

기존 C++은 확장자로 '---.c'를 사용하였습니다. 하지만, C++에서는 '---.cpp'이라는 확장자를 사용합니다.

일반적으로 IDE가 확장자에 따라서 적용하는 컴파일러를 결정하는 경우가 많기 때문에 C++ 사용시 꼭 cpp확장자를 사용해야합니다.

 

헤더파일의 경우 C와 마찬가지로 '---.h' 형태의 확장자를 사용합니다. 다만, 코드에서 헤더파일을 선언할 때, 기존 C에서는 <stdio.h>의 형태로 [파일명+확장자]형태로 선언했다면, C++에서는 <iostream> 이라는 파일명으로 선언을 합니다.

 

 

 

2. 기본 입출력 ( CPP/iostream.cpp )

기본 입출력은 <iostream> 헤더를 사용합니다.

 

샘플 코드는 아래와 같습니다.

 

#include <iostream>

int main(void){
    int temp = 0;
    std::cout << "Console Out" << std::endl;
    std::cout << "Hello" << "World~!" << std::endl;

    int a, b;
    std::cout << "숫자 2개입력 > ";
    std::cin >> a >> b ;
    std::cout << a+b << std::endl;
    return 0;
}

실행결과

 

 

 

3. 배열 입출력시 주의사항 ( CPP/iostream_arry.cpp )

배열을 이용해서 단어나 문자를 입력하는 경우가 많이 있습니다.

 

아래 코드를 보고 한눈에 잘못된 부분을 찾으셨다면 '짝짝짝~'

#include <iostream>

int main(void){
    char str[100] = "배열 입출력 주의점";
    std::cout << "str 값 : " << str << std::endl;

    char temp[100];
    std::cout << "값 입력 > ";
    std::cin >> temp;  // "test test test" 를 입력할 예정
    std::cout << "입력한 값 출력 : " << temp << std::endl;
    
    
    return 0;
}

 

위의 코드에서 문제인 부분은 [입력] 부분입니다.

 

temp에 "test test test"를 입력할 경우 [std::cin]은 스페이스바를 기준으로 입력값을 정하기 때문에 처음 'test'만 temp값에 저장되고 나머지 'test test'는 버퍼에 남게됩니다.

 

실행결과

 

때문에 char 배열에 cin을 이용해서 값을 지정할 경우 공백이 없는 문자열을 이용하던가 혹은 위의 문제를 해결할 코드를 사용해야합니다.

반응형

+ Recent posts