[c++_9. 생성자 중첩(오버로딩), 디폴트인자]

·2022년 8월 11일
0

C++_Study

목록 보기
17/25

#9-6. 생성자 중첩(오버로딩)

  • 생성자: 클래스 이름과 동일한 이름의 함수
    ex). class Dog{},Dog() <- 생성자
class Dog{
private:
    int age;
public:
    // 생성자도 함수다. 생성자 오버로딩 (중첩)
    Dog() {age=1;}      // 매개변수가 없고 무조건 나이는 1
    Dog(int a){age=a;}  // 매개변수가 하나 받아서 매개변수를 통해 반환
    ~Dog();
    int getAge();
    void setAge(int a);
};
Dog::~Dog()
{
    std::cout << "소멸" << std::endl;
}
int Dog::getAge()
{
    return age; 
}

void Dog::setAge(int a)
{
    age=a;
}
int main()
{   
    // Dog happy(5): 매개변수가 있는 생성자 호출, 5가 매개변수 a로 넘어간다. 
    // meri: 매개변수가 없는 생성자 호출
    Dog happy(5), meri; 
    
    std::cout << happy.getAge() << "," << meri.getAge();
    return 0;
}

#9-7. 디폴트 인자(default parameter, default argument)

[함수선언]

  • int add(int, int); //매개변수 2개, return값 int
  • c++에서 함수를 호출할 때 별도의 매개변수를 전달하지 않아도 기본적인 값을 전달하도록 함수원형을 선언할 때 디폴트값을 지정 가능.
  • 디폴트 매개변수를 갖는 함수를 만들 때, main()함수 전에 함수 선언을 하면 선언부에만 디폴트 인자를 지정해야한다.
    • int add(int i=1, int j=2); //선언부에 디폴트 인자 작성

#9-8. 디폴트인자 실습2

  • 디폴트 인자 (선언부에 값을 미리 디폴트값으로 넣어 놓는다.)
  • 디폴트값이 있는데도 불구하고 내가 숫자를 넣으면 내가 우선
  • 일단 디폴트 매개변수를 정의하기 시작하면 그 다음 매개변수들은 모두 디폴트 매개변수를 가져야 한다 (i에게 값을 주었다면 j도)
int add(int i=1, int j=2)           // 형식 매개변수 (디폴트 인자값!)
{
    return (i+j);
} 

int main()
{
    std::cout << add() << ",";          //실매개변수 없음, 3
    std::cout << add(10) << ",";        //실매개변수 한개, 12
    std::cout << add(10,20) << ",";     //실매개변수 두개, 30
    return 0;
}
#1. 
int Gop(int i, int j, int k=1, int l=1)
{
    return(i*j*k*l);
}
int main()
{
    std::cout << Gop(1,2) << std::endl; 
    std::cout << Gop(1,2,3) << std::endl;
    std::cout << Gop(1,2,3,4) << std::endl; 
    return 0;
}

#2. 
int Hap(int i, int j, int k=0, int l=0)
{
    return(i+j+k+l);
}

int main()
{
    std::cout << Hap(1,2) << std::endl; 
    std::cout << Hap(1,2,3) << std::endl;
    std::cout << Hap(1,2,3,4) << std::endl; 
    return 0;
}
profile
Hakuna Matata

0개의 댓글

관련 채용 정보