Các loại nhà xây dựng C ++Trong bài viết này, chúng tôi sẽ tìm hiểu thêm về các loại nhà xây dựng khác nhau trong C ++. Trình xây dựng là một loại chức năng thành viên đặc biệt được gọi tự động khi đối tượng của lớp được tạo. Tên của hàm tạo giống như tên của lớp và nó không có loại trả về nào. Show
Có ba loại hàm tạo trong C ++.
Loại hàm tạo trong C ++Sự khác biệt giữa hàm xây dựng và hàm thành viên
Hàm tạo mặc định trong C ++
Mã mẫu#include<iostream> using namespace std; class construct { public: int a, b; // Default Constructor construct() { a = 10; b = 20; } }; int main() { construct c; int sum = c.a + c.b; cout << "a : " << c.a << endl; cout << "b : " << c.b << endl; cout << "sum : " << sum << endl; return 0; } Đầu raa : 10 Hàm tạo tham số hóa trong C ++
Chúng ta cũng có thể có nhiều hơn một hàm tạo trong một lớp và khái niệm đó được gọi là quá tải hàm tạo. Sử dụng hàm tạo tham số hóa:
Mã mẫu#include<iostream> using namespace std; class PrepInsta { private: int a, b; public: PrepInsta(int a1, int b1) { a = a1; b = b1; } int getA() { return a; } int getB() { return b; } }; int main() { PrepInsta obj1(10, 15); cout << "a = " << obj1.getA() << ", b = " << obj1.getB(); return 0; } Đầu raa = 10, b = 15 Hàm tạo tham số hóa trong C ++
Chúng ta cũng có thể có nhiều hơn một hàm tạo trong một lớp và khái niệm đó được gọi là quá tải hàm tạo.
Sử dụng hàm tạo tham số hóa: These are the special type of Constructors that takes an object as an argument and is used to copy values of data members of one object into another object. class_name (class-name &){
....
}
Trình xây dựng bản sao là hàm thành viên khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác của cùng một lớp.#include<iostream> using namespace std; class PrepInsta { private: int x, y; public: PrepInsta() { // empty default constuctor } PrepInsta(int x1, int y1) { x = x1; y = y1; cout << "Parameterized constructor called here" << endl; } // User defined Copy constructor PrepInsta(const PrepInsta &p2) { x = p2.x; y = p2.y; cout << "Copy constructor called here" << endl; } int getX() { return x; } int getY() { return y; } }; int main() { // Trying to call parameterized constructor here PrepInsta p1(10, 15); // Trying to call copy constructor here PrepInsta p2 = p1; // Trying to call Copy constructor here (Another way of doing so) PrepInsta p3(p1); PrepInsta p4; // Here there is no copy constructor called only assignment operator happens p4 = p1; cout << "\nFor p4 no copy constructor called only assignment operation happens\n" << endl; // displaying values for both constructors cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY(); cout << "\np2.x = " << p2.getX() << ", p2.y = " << p2.getY(); cout << "\np3.x = " << p3.getX() << ", p3.y = " << p3.getY(); cout << "\np4.x = " << p4.getX() << ", p4.y = " << p4.getY(); return 0; } Đầu raParameterized constructor called here Hàm tạo tham số hóa trong C ++ In the above example there are two ways to call copy constructor – Đối số có thể được chuyển cho các hàm tạo tham số. Những đối số này giúp khởi tạo một đối tượng khi nó được tạo.
Để tạo một hàm tạo được tham số hóa, chỉ cần thêm các tham số vào nó theo cách bạn sẽ vào bất kỳ chức năng nào khác.Khi bạn xác định cơ thể Constructor, hãy sử dụng các tham số để khởi tạo đối tượng. Chúng ta cũng có thể có nhiều hơn một hàm tạo trong một lớp và khái niệm đó được gọi là quá tải hàm tạo.
Nó được sử dụng để quá tải các hàm tạo. Sao chép hàm tạo trong C ++Trình xây dựng bản sao là hàm thành viên khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác của cùng một lớp.C++ compiler will create a default copy constructor for each class which does a member-wise copy between objects. Bất cứ khi nào chúng tôi xác định một hoặc nhiều bộ xây dựng không mặc định (có tham số) cho một lớp, một hàm tạo mặc định (không có tham số) cũng nên được xác định rõ ràng là trình biên dịch sẽ không cung cấp hàm tạo mặc định trong trường hợp này. Một đối tượng có thể được khởi tạo với một đối tượng khác của cùng loại. Điều này giống như sao chép nội dung của một lớp sang lớp khác. This only happens in heap memory variables example pointers Trình xây dựng bản sao là hàm thành viên khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác của cùng một lớp.Bất cứ khi nào chúng tôi xác định một hoặc nhiều bộ xây dựng không mặc định (có tham số) cho một lớp, một hàm tạo mặc định (không có tham số) cũng nên được xác định rõ ràng là trình biên dịch sẽ không cung cấp hàm tạo mặc định trong trường hợp này. #include<iostream> #include<string.h> using namespace std; class PrepInsta { char *prepString; public: // Note : No user defined Copy constuctor created here PrepInsta(const char *prepString1) { //We are invoiking Dynamic memory allocation here prepString = new char[16]; strcpy(prepString, prepString1); } /* concatenate method */ void concatenate(const char *prepString1) { // using function to Concatenating two strings strcat(prepString, prepString1); } void print() { cout << prepString << endl; } }; /* main function */ int main() { PrepInsta obj1("Prep"); //Copy constructor PrepInsta obj2 = obj1; cout << "Before concatenation - " << endl; obj1.print(); obj2.print(); // obj1 is invoking concatenate() // but change will also be reflected in obj2 (shallow copy) // see more explanation in below comments obj1.concatenate("Insta"); cout << "\nAfter concatenation - " << endl; // as we didn't create any user defined copy constructor // compiler created default copy constuctor in backend on its own // So both obj1 & obj2 variables share same memory (shallow copy) // any change in obj1 also reflects in obj2 obj1.print(); obj2.print(); return 0; } Đầu raBefore concatenation - Prep Prep Hàm tạo tham số hóa trong C ++ Đối số có thể được chuyển cho các hàm tạo tham số.Những đối số này giúp khởi tạo một đối tượng khi nó được tạo.The individual copies of memory are created for each object and thus there is no sharing of memory. Để tạo một hàm tạo được tham số hóa, chỉ cần thêm các tham số vào nó theo cách bạn sẽ vào bất kỳ chức năng nào khác. Một đối tượng có thể được khởi tạo với một đối tượng khác của cùng loại. Điều này giống như sao chép nội dung của một lớp sang lớp khác. This only happens in heap memory variables example pointers Trình xây dựng bản sao là hàm thành viên khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác của cùng một lớp.#include<iostream> #include<string.h> using namespace std; class PrepInsta { char *prepString; public: PrepInsta (const char *str) { //We are invoking Dynamic memory allocation here prepString = new char[16]; strcpy(prepString, str); } // here we are doing the change of adding additional code // for user defined copy constructor (Deep Copy) PrepInsta (const PrepInsta &x2) { //We are invoking Dynamic memory allocation here prepString = new char[16]; strcpy(prepString, x2.prepString); } void concatenate(const char *prepString1) { // using function to Concatenating two strings strcat(prepString, prepString1); } ~PrepInsta() { delete [] prepString; } void print() { cout << prepString << endl; } }; /* main function */ int main() { PrepInsta p1("Prep"); PrepInsta p2 = p1; //copy constructor cout << "Before concatenation - " << endl; p1.print(); p2.print(); p1.concatenate("Insta"); cout << "\nAfter concatenation - " << endl; p1.print(); p2.print(); return 0; } Bất cứ khi nào chúng tôi xác định một hoặc nhiều bộ xây dựng không mặc định (có tham số) cho một lớp, một hàm tạo mặc định (không có tham số) cũng nên được xác định rõ ràng là trình biên dịch sẽ không cung cấp hàm tạo mặc định trong trường hợp này.a : 100 Một đối tượng có thể được khởi tạo với một đối tượng khác của cùng loại. Điều này giống như sao chép nội dung của một lớp sang lớp khác.Để hiểu rõ hơn về trình xây dựng sao chép trong C ++ (bấm vào đây).. How many types of constructors are there in C++? Tổng cộng chúng ta có 3 loại hàm tạo trong C ++ là -
Giới thiệu về các lớp học và khái niệm OOPS
Rất tiếc - 1
Các loại nhà xây dựng là gì?Các loại chất xây dựng.. Nhà xây dựng mặc định.. Hàm tạo tham số hóa .. Sao chép Constructor .. Hàm tạo tĩnh .. Nhà xây dựng riêng .. Hàm tạo trong C và các loại của nó là gì?Trình xây dựng là một loại chức năng thành viên đặc biệt được gọi là tự động khi một đối tượng được tạo.Trong C ++, một hàm tạo có cùng tên với lớp của lớp và nó không có loại trả về.Ví dụ: tường lớp {public: // tạo tường cấu tạo () {// code}};a special type of member function that is called automatically when an object is created. In C++, a constructor has the same name as that of the class and it does not have a return type. For example, class Wall { public: // create a constructor Wall() { // code } };
Có bao nhiêu loại hàm tạo trong C MCQ?Trả lời - c) Có ba loại hàm tạo trong C ++ -.Chất xây dựng mặc định, hàm tạo cấu trúc được tham số hóa.7.three types of constructors in C++ - . default constructor, parameterized constructor and copy constructor. 7.
Có bao nhiêu nhà xây dựng?Có hai loại hàm tạo cấu trúc được tham số hóa và các hàm tạo No-Arg.two types of constructors parameterized constructors and no-arg constructors. |