C 언어
이 자습서에서는 도움말 예제를 통해 C++ 생성자와 해당 유형에 대해 알아봅니다.
생성자는 개체가 생성될 때 자동으로 호출되는 특수한 유형의 멤버 함수입니다.
C++에서 생성자는 클래스와 이름이 같으며 반환 유형이 없습니다. 예를 들어,
class Wall {
public:
// create a constructor
Wall() {
// code
}
};
여기서 함수 Wall()
Wall
클래스의 생성자입니다. . 생성자
public
입니다.
매개변수가 없는 생성자를 기본 생성자라고 합니다. . 위의 예에서 Wall()
기본 생성자입니다.
// C++ program to demonstrate the use of default constructor
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
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 개체가 생성되면 Wall()
생성자가 호출됩니다. 이것은 길이를 설정합니다. 5.5
에 대한 개체의 변수 .
참고: 클래스에 생성자를 정의하지 않은 경우 C++ 컴파일러는 매개변수 없이 빈 코드로 기본 생성자를 자동으로 생성합니다.
<시간>
C++에서 매개변수가 있는 생성자를 매개변수화된 생성자라고 합니다. 이것은 회원 데이터를 초기화하는 데 선호되는 방법입니다.
<시간>
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
length = len;
height = hgt;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create object and initialize data members
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
여기에서 매개변수화된 생성자를 만들었습니다. Wall()
2개의 매개변수가 있습니다:double len
및 double hgt
. 이 매개변수에 포함된 값은 멤버 변수 length를 초기화하는 데 사용됩니다. 및 높이 .
Wall
객체를 생성할 때 클래스에서 멤버 변수의 값을 인수로 전달합니다. 이에 대한 코드는 다음과 같습니다.
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
이렇게 초기화된 멤버 변수로 이제 calculateArea()
로 벽의 면적을 계산할 수 있습니다. 기능.
C++의 복사 생성자는 한 개체의 데이터를 다른 개체로 복사하는 데 사용됩니다.
<시간>
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create an object of Wall class
Wall wall1(10.5, 8.6);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
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
이 프로그램에서 우리는 Wall
의 한 객체의 내용을 복사하기 위해 복사 생성자를 사용했습니다. 다른 사람에게 수업. 복사 생성자의 코드는 다음과 같습니다.
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
이 생성자의 매개변수에는 Wall
의 개체 주소가 있습니다. 수업.
그런 다음 obj의 변수 값을 할당합니다. 객체를 복사 생성자를 호출하는 객체의 해당 변수로 변경합니다. 개체의 내용이 복사되는 방식입니다.
main()
에서 , 그런 다음 두 개의 객체 wall1을 만듭니다. 및 벽2 그런 다음 wall1의 내용을 복사합니다. wall2로 :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
여기서 wall2 객체는 wall1의 주소를 전달하여 복사 생성자를 호출합니다. 객체를 인수로 예:&obj = &wall1
.
참고 :생성자는 주로 객체를 초기화하는 데 사용됩니다. 또한 개체가 생성될 때 기본 코드를 실행하는 데 사용됩니다.
C 언어
C++ 연산자 오버로딩 이 튜토리얼에서는 예제를 통해 연산자 오버로딩에 대해 배울 것입니다. C++에서는 객체 및 구조와 같은 사용자 정의 유형에 대해 연산자가 작동하는 방식을 변경할 수 있습니다. 이를 연산자 과부하라고 합니다. . 예를 들어, 세 개의 객체 c1를 생성했다고 가정합니다. , c2 및 결과 Complex이라는 클래스에서 복소수를 나타냅니다. 연산자 오버로딩을 통해 연산자의 작동 방식을 변경할 수 있으므로 + 연산자가 작동하고 이를 사용하여 c1의 복소수를 추가합니다. 및 c2 다음 코드를 작성하여: resu
C++ 상속 이 튜토리얼에서는 예제를 통해 C++의 상속에 대해 배웁니다. 상속은 C++에서 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 기존 클래스(기본 클래스)에서 새 클래스(파생 클래스)를 만들 수 있습니다. 파생 클래스는 기본 클래스의 기능을 상속합니다. 고유한 추가 기능을 가질 수 있습니다. 예를 들어, class Animal { // eat() function // sleep() function }; class Dog : public Animal { // bark() function };