C++의 매개변수화된 생성자: 작업 및 예제

게시 됨: 2021-05-27

목차

생성자 란 무엇입니까?

생성자는 클래스의 개체를 초기화하는 데 사용되는 클래스의 멤버 함수입니다. C++ 에서는 클래스의 인스턴스인 객체가 생성될 때 생성자가 자동으로 호출됩니다. 따라서 생성자는 클래스의 특수 멤버 함수입니다.

매개변수화된 생성자란 무엇입니까?

인수는 생성자에 전달할 수 있습니다. 개체가 생성될 때 이러한 인수는 개체를 초기화하는 데 도움이 됩니다. C++에서 매개변수화된 생성자 를 만들기 위해 다른 함수에 추가할 수 있는 것처럼 매개변수를 함수에 추가할 수 있습니다. 생성자의 본문이 정의되면 매개변수를 사용하여 개체를 초기화합니다.

C++에서 매개변수화된 생성자의 구문

클래스 이름_of_class{

액세스 지정자(공개/보호/비공개):

멤버 변수

멤버 함수

공공의:

name_of_class(variables){ //생성자 코드

}

// 기타 함수 및 변수

}

name_of_class가 포함된 구문과 멤버 함수 및 멤버 변수를 포함하는 액세스 지정자가 뒤따릅니다. 이 모든 것이 생성자 코드에 포함되어 있으므로 생성자의 본문에서 호출할 수 있습니다.

읽어보기: C++용 오픈 소스 프로젝트

C++의 매개변수화된 생성자의 예

#include <iostream>

네임스페이스 std 사용

클래스 예

{

사적인:

정수 a, b;

공공의:

// 매개변수화된 생성자

예(int a1, int b1)

{

ㄱ = ㄱ1;

b = b1;

}

정수 getA()

{

반환;

}

정수 getB()

{

리턴 b;

}

};

정수 메인()

{

// 생성자 호출

예 e1(5, 10);

cout << "e1.a = " << e1.getA() << ", e1.b = " << e1.getB();

반환 0;

}

산출

설명: 개인 변수 및 b는 클래스 Example에서 선언됩니다. 매개변수화된 생성자는 예제 함수를 사용하여 선언됩니다. 여기에는 getA() 및 getB() 두 가지 메서드가 포함됩니다. 기본 클래스에서 생성자가 호출되고 생성자의 액세스 값이 할당됩니다.

C++의 매개변수화된 생성자는 어떻게 작동합니까?

C++에서 매개 변수화된 생성자 가 정의 될 ​​때마다 개체가 처리하거나 포함할 값 또는 세부 정보 및 매개 변수를 보유하는 개체가 시작 됩니다. 그런 다음 해당 개체에 인수를 전달할 수 있습니다. 절차는 함수에 값을 전달하는 것과 매우 유사합니다. 또한 매개변수화된 값을 개체에 전달하는 것과 유사합니다.

생성자의 본문에 정의된 객체는 매개변수를 사용하여 초기화됩니다. 매개변수화된 생성자가 선언될 때마다 값을 생성자 함수에 인수로 전달해야 합니다. 이러한 생성자는 명시적으로 또는 암시적으로 모두 호출할 수 있습니다. 기존의 객체 선언 방식은 작동하지 않습니다.

참고: 통화 유형-

  1. 명시적 호출 - 예제 e1= 예제(0,10)
  2. 암시적 호출 - 예 e1(0,10)

확인: 초보자를 위한 C++ 프로젝트 아이디어

C++에서 매개변수화된 생성자의 용도는 무엇입니까?

매개변수화된 생성자의 용도는 다음과 같습니다.

  • 생성자 오버로딩
  • 초기화/생성 시 다른 개체의 다양한 데이터 요소에 다른 값을 할당하는 데 사용됩니다.

또 다른 예:

1. 직사각형의 면적을 계산하는 프로그램

#include <iostream>

네임스페이스 std 사용

// 클래스 선언

클래스 직사각형 {

사적인:

이중 길이;

이중 너비;

공공의:

// 매개변수화된 생성자 생성

직사각형(이중 렌즈, 이중 brt) {

// 개인 변수 초기화

길이 = len;

너비 = brt;

}

이중 계산 영역() {

반환 길이 * 너비;

}

};

정수 메인() {

// 객체 생성 및 데이터 멤버 초기화

직사각형 rect1(10, 8.6);

직사각형 rect2(8.5, 6);

cout << "사각형 1의 면적: " << rect1.calculateArea() << endl;

cout << "사각형 2의 면적: " << rect2.calculateArea() << endl;

반환 0;

}

산출

설명: 이 예에서는 double len과 double bdt라는 두 개의 매개변수가 있는 매개변수화된 생성자 직사각형()을 만들었습니다. 이러한 매개변수에는 멤버 변수 길이 및 너비를 초기화하는 데 사용되는 값이 포함됩니다. Rectangle 클래스의 객체를 생성할 때 멤버 변수의 값을 인수로 전달합니다. 멤버 변수가 초기화될 때 computeArea() 함수를 사용하여 면적을 계산할 수 있습니다.

1. 학생의 성적 표시

#include <iostream>

네임스페이스 std 사용

수업 학생 {

공공의:

int std_id; // 데이터 멤버

string std_name;//또한 인스턴스 변수

부동 std_marks;

학생(int i, string, float b)

{

std_id = 나;

표준 이름 = 에이;

std_marks = b;

}

무효 표시()

{

cout<<std_id<<" "<<std_name:<<" "<<std_marks <<endl;

}

};

정수 메인(무효) {

학생 s1 = 학생(101, “소니야”, 89); //학생 객체 생성

학생 s2=학생(102, “나쿨”, 59);

s1.디스플레이();

s2.디스플레이(); 반환 0;

}

산출

설명: id, 이름 및 표시는 데이터 멤버(인스턴스 변수도 포함)입니다. 학생은 매개변수화된 생성자이며 해당 개체는 기본 클래스에서 생성됩니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

생성자는 값을 전달할 수 있는 특별한 종류의 메서드일 뿐입니다. 생성자에 값을 전달하지 않으면 최종 객체에 기본값이 있습니다. [1] [MOU2] 객체는 메인 클래스의 일부인 멤버 변수의 메소드와 값을 담고 있다. 이 값은 최종적으로 생성자를 통해 전달됩니다. C++ 매개변수화된 생성자는 다른 개체에 다른 값을 할당하는 이점이 있으며 오버로딩이 있을 수 있습니다.

이제 C++의 매개변수화된 생성자에 대해 알게 되었으므로 프로그래밍 경력을 더 깊이 파고 들어가고 싶다면 인도 최대의 온라인 고등 교육 회사인 upGrad의 과정을 살펴보십시오. 풀스택 소프트웨어 개발 프로그램 을 확인해야 합니다 .

생성자 란 무엇입니까?

생성자는 클래스와 동일한 이름을 가진 클래스의 특수 메서드입니다. 이 메서드는 클래스가 생성(인스턴스화)될 때 자동으로 호출되기 때문에 특별합니다. 생성자에 인수가 없으면 클래스는 빈 값으로 인스턴스화됩니다. 생성자는 초기화 작업을 수행하고 클래스의 인스턴스 변수를 초기화합니다. 생성자의 주요 목적은 객체의 속성 값을 설정하는 것입니다. 또한 한 번만 실행해야 하는 작업을 수행하는 데 사용됩니다. 생성자는 일반적으로 클래스에서 public static으로 선언되고 객체는 이 생성자를 사용하여 생성됩니다.

한 클래스에 몇 개의 생성자가 있을 수 있습니까?

C++에 대해 이야기하는 경우 생성자의 수는 무제한입니다. 그러나 컴퓨터의 메모리 제한, 클래스의 복잡성 등과 같은 다른 이유로 인해 다른 제한이 있을 수 있습니다. 따라서 생성자의 수에는 제한이 없지만 생성자 매개 변수의 수는 제한이 없습니다. 클래스에는 원하는 만큼 생성자가 있을 수 있습니다. 그러나 기본 생성자는 필수입니다. 기본 생성자가 없는 모든 클래스는 추상 클래스입니다. 추상 클래스는 인스턴스화할 수 없습니다.

객체지향 프로그래밍이란?

객체 지향 프로그래밍은 '객체'를 프로그램이나 컴퓨터 시스템의 기본 빌딩 블록으로 취급하는 프로그래밍 패러다임입니다. 개체는 종종 속성으로 알려진 필드 형식의 데이터를 포함할 수 있는 소프트웨어 엔터티입니다. 그리고 종종 메소드로 알려진 절차 형태의 코드. 객체 지향 프로그래밍은 초기 프로그래밍 언어에서 흔히 볼 수 있는 절차적 논리나 제어 흐름에 초점을 맞추기보다는 데이터와 데이터를 둘러싼 규칙에 초점을 맞춥니다. OOP는 개별 요소의 집합이 아니라 전체로서 데이터를 다룹니다.