Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

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 ++.

  • Nhà xây dựng mặc định
  • Hàm tạo tham số hóa
  • Sao chép hàm tạo

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu 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

  • Tên trình xây dựng phải giống như tên lớp nhưng các hàm không thể có cùng tên với tên lớp.
  • Các hàm tạo không có loại trả về trong khi các chức năng phải có loại trả về.
  • Các hàm tạo được tự động gọi khi một đối tượng được tạo.
  • Một hàm thành viên có thể là ảo, nhưng không có khái niệm về các hàm tạo ảo.
  • Các hàm tạo được gọi tại thời điểm tạo đối tượng tự động và không thể được gọi rõ ràng bằng cách sử dụng các đối tượng lớp.

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Hàm tạo mặc định trong C ++

  • Hàm tạo mặc định là hàm tạo mà không có bất kỳ đối số nào. Nó không có tham số.
  • Trong trường hợp này, ngay khi đối tượng được tạo, hàm tạo được gọi là khởi tạo các thành viên dữ liệu của nó.
  • Một hàm tạo mặc định rất quan trọng đối với việc khởi tạo các thành viên đối tượng, rằng ngay cả khi chúng tôi không xác định rõ ràng hàm tạo, trình biên dịch sẽ cung cấp một hàm tạo mặc định một cách ngầm

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 ra

a : 10
b : 20
sum : 30

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.
  • Để 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.

Sử dụng hàm tạo tham số hóa:

  • Nó được sử dụng để khởi tạo các yếu tố dữ liệu khác nhau của các đối tượng khác nhau với các giá trị khác nhau khi chúng được tạo.
  • Nó được sử dụng để quá tải các hàm tạo.

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 ra

a = 10, b = 15

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.
  • Để 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.

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 &){
....
}
  • Nó được sử dụng để khởi tạo các yếu tố dữ liệu khác nhau của các đối tượng khác nhau với các giá trị khác nhau khi chúng được 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.

#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 ra

Parameterized constructor called here
Copy constructor called here
Copy constructor called here

For p4 no copy constructor called only assignment operation happens

p1.x = 10, p1.y = 15
p2.x = 10, p2.y = 15
p3.x = 10, p3.y = 15
p4.x = 10, p4.y = 15

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ố.
PrepInsta p3(p1);

Những đối số này giúp khởi tạo một đối tượng khi nó được tạo.

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Để 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.

  • Sử dụng hàm tạo tham số hóa:
  • Nó được sử dụng để khởi tạo các yếu tố dữ liệu khác nhau của các đối tượng khác nhau với các giá trị khác nhau khi chúng được tạo.

Nó được sử dụng để quá tải các hàm tạo.

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

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

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại 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.

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 ra

Before 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

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại 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.

#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 : 10
b : 20
sum : 30
0

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong 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.

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong 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à -

  1. Nhà xây dựng mặc định
  2. Hàm tạo tham số hóa
  3. Sao chép hàm tạo

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Hướng dẫn how many types of constructor are there in c++ - có bao nhiêu loại hàm tạo trong c ++

Giới thiệu về các lớp học và khái niệm OOPS

  • Khái niệm oops trong C ++
  • Đối tượng lớp V/S.
  • Cấu trúc của chương trình C ++
  • Truy cập sửa đổi
  • Người xây dựng và người phá hủy
    • Người xây dựng
    • Các loại nhà xây dựng
    • Kẻ hủy diệt
    • Sao chép các hàm tạo
    • Chất xây dựng chuyển đổi

Rất tiếc - 1

  • Di sản
  • Các loại kế thừa trong C ++
    • Thừa kế duy nhất
    • Thừa kế đa cấp
    • Nhiều kế thừa
    • Di truyền phân cấp
    • Di truyền lai hoặc đa đường
    • Người xây dựng & nbsp; và những kẻ phá hoại với sự thừa kế
  • Đa hình
    • Chạy đa hình thời gian
    • Biên dịch tính đa hình thời gian
    • Sự khác biệt giữa thời gian biên dịch và đa hình thời gian chạy
    • Binding động (ràng buộc muộn)
    • Liên kết tĩnh (liên kết sớm)
    • Ràng buộc sớm và ràng buộc muộn
  • Upcasting và hạ thấp
    • Upcasting
    • Hạ thấp
  • Quá tải người vận hành (chi tiết)
    • Quá tải toán tử không
    • Quá tải toán tử nhị phân
    • Toán tử quan hệ quá tải trong C ++ & NBSP;
    • Quá tải ++ và - Các toán tử tăng và giảm
    • Chức năng ghi đè
    • Quá tải chức năng
  • Quá tải hàm tạo

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.