산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 생성자 이해하기: 기본, 매개변수, 복사 생성자 완벽 해설

C++ 생성자 완벽 이해

C++ 생성자가 무엇인지, 왜 중요한지, 기본/매개변수/복사 생성자를 명확한 예제로 구현하는 방법을 다룹니다.

생성자는 객체 인스턴스화 시 **자동 실행되는 특수 멤버 함수**입니다. C++에서 생성자는 클래스와 이름이 같고 **반환 타입을 명시하지 않습니다**.

class Wall {
public:
    // 생성자
    Wall() {
        // 초기화 코드
    }
};

생성자는 다음을 만족해야 합니다:


기본 생성자(Default Constructor)

매개변수 없는 생성자를 **기본 생성자**라 합니다. 위 Wall()이 그 예입니다.


예제 1: 기본 생성자

// 기본 생성자 시연
#include <iostream>
using namespace std;
class Wall {
private:
    double length;
public:
    // 기본 생성자
    Wall() {
        length = 5.5;
        cout << "Creating a wall." << endl;
        cout << "Length = " << length << endl;
    }
};
int main() {
    Wall wall1;
    return 0;
}

실행 결과

Creating a Wall
Length = 5.5

wall1 인스턴스화 시 기본 생성자가 length를 5.5로 설정하고 메시지 출력.

참고: 클래스에 명시적 생성자가 없으면 컴파일러가 아무 일도 안 하는 기본 생성자를 자동 생성합니다.


매개변수 생성자(Parameterized Constructor)

객체 생성 시 멤버 데이터를 초기화할 인수를 받는 생성자. 객체 상태 설정의 **권장 방식**입니다.


예제 2: 매개변수 생성자

// 매개변수 생성자로 벽 면적 계산
#include <iostream>
using namespace std;
class Wall {
private:
    double length;
    double height;
public:
    // 매개변수 생성자
    Wall(double len, double hgt) {
        length = len;
        height = hgt;
    }
    double calculateArea() {
        return length * height;
    }
};
int main() {
    Wall wall1(10.5, 8.6);
    Wall wall2(8.5, 6.3);
    cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
    cout << "Area of Wall 2: " << wall2.calculateArea();
    return 0;
}

실행 결과

Area of Wall 1: 90.3
Area of Wall 2: 53.55

생성자가 전달받은 값을 length, height에 할당해 calculateArea()가 면적 계산 가능하게 함.


복사 생성자(Copy Constructor)

복사 생성자는 기존 객체의 **정확한 복사본**으로 새 객체를 만듭니다. 같은 타입의 다른 객체로 초기화될 때 호출됩니다.


예제 3: 복사 생성자

#include <iostream>
using namespace std;
class Wall {
private:
    double length;
    double height;
public:
    // 매개변수 생성자
    Wall(double len, double hgt) {
        length = len;
        height = hgt;
    }
    // 복사 생성자
    Wall(Wall &obj) {
        length = obj.length;
        height = obj.height;
    }
    double calculateArea() {
        return length * height;
    }
};
int main() {
    Wall wall1(10.5, 8.6);
    Wall wall2 = wall1; // 복사 생성자 호출
    cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
    cout << "Area of Wall 2: " << wall2.calculateArea();
    return 0;
}

실행 결과

Area of Wall 1: 90.3
Area of Wall 2: 90.3

복사 생성자가 wall1의 length, height를 wall2로 복사해 두 객체 상태가 동일해짐.

참고: 생성자는 주로 객체 초기화용이지만, 객체 생성 시 커스텀 로직 실행에도 활용됩니다.

C 언어

  1. C# 생성자(Constructor) 총정리: 종류, 예제, 고급 패턴
  2. C# 생성자 오버로딩 마스터하기: 유연한 클래스 설계
  3. C++ 데이터 타입 이해하기: 기초, 수정자, 모범 사례
  4. C++ 연산자 마스터하기: 유형별 완벽 가이드와 실전 예제
  5. C++ 주석: 가독성 높고 유지보수하기 좋은 코드 작성법
  6. C++ 클래스 템플릿 마스터: 실전 가이드
  7. Java 생성자 마스터하기: 종류, 사용법, 실전 예제
  8. Java 생성자 이해: 초기화와 모범 사례
  9. C++ 프로그래밍 언어: 개요와 핵심 특징
  10. C++ 상수와 리터럴 완전 정복: 타입, 문법, 모범 사례