Mẹo Hàm khởi tạo không tham số C++ ✅

Mẹo Hướng dẫn Hàm khởi tạo không tham số C++ 2022

Bùi Đức Thìn đang tìm kiếm từ khóa Hàm khởi tạo không tham số C++ được Update vào lúc : 2022-09-28 19:42:21 . Với phương châm chia sẻ Bí quyết về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tham khảo nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.

This entry is part 3 of 11 in the series Hướng đối tượng C++

Nội dung chính
    Hàm khởi tạo (Constructor)Hàm khởi tạo là gì?Sự khác lạ giữa hàm tạo và hàm thành viên thông thườngCác loại hàm khởi tạoHàm huỷ (Deconstructor)Hàm huỷ là gì?Hàm huỷ sẽ được gọi lúc nào?Hàm huỷ khác những hàm thành viên thông thường ở đâu?Có thể có nhiều hơn nữa một hàm huỷ ở trong cùng một lớp không?Khi nào thì ta cần tự định nghĩa một hàm huỷ?Một hàm huỷ hoàn toàn có thể là một hàm ảo hay là không ?Tài liệu tham khảo

87 / 100

Chào cả nhà
Trong nội dung bài viết này tất cả chúng ta sẽ đi tìm hiểu một hàm thành viên rất quan trọng của lớp đó đó đó là hàm khởi tạo và hàm huỷ.

    Hàm khởi tạo (Constructor)
      Hàm khởi tạo là gì?Sự khác lạ giữa hàm tạo và hàm thành viên thông thườngCác loại hàm khởi tạo
        Hàm khởi tạo không tham số ( Default Constructor )Hàm khởi tạo có tham số ( Parameterized Constructor )Hàm khởi tạo sao chép ( Copy Constructor )
    Hàm huỷ (Deconstructor)
      Hàm huỷ là gì?Hàm huỷ sẽ được gọi lúc nào?Hàm huỷ khác những hàm thành viên thông thường ở đâu?Có thể có nhiều hơn nữa một hàm huỷ ở trong cùng một lớp không?Khi nào thì ta cần tự định nghĩa một hàm huỷ?Một hàm huỷ hoàn toàn có thể là một hàm ảo hay là không ?
    Tài liệu tham khảo

Hàm khởi tạo (Constructor)

Hàm khởi tạo là gì?

Hàm khởi tạo là một hàm thành viên đặc biệt của một lớp. Nó sẽ được tự động gọi đến khi một đối tượng của lớp đó được khởi tạo.

Sự khác lạ giữa hàm tạo và hàm thành viên thông thường

Một hàm tạo sẽ khác những hàm thông thường ở những điểm sau:

    Có tên trùng với tên lớpKhông có kiểu tài liệu trả về ( kể cả kiểu void)Tự động được gọi khi một đối tượng thuộc lớp được tạo raNếu tất cả chúng ta không khai báo một hàm tạo, trình biên dịch C++ sẽ tự động tạo một hàm tạo mặc định cho tất cả chúng ta (sẽ là hàm ​​không còn tham số nào và có phần thân trống).

Hàm tạo hoàn toàn có thể rất hữu ích để thiết lập những giá trị khởi tạo cho những trở thành viên rõ ràng.

Ví dụ đơn giản về hàm khởi tạo:

classsinhvien

private:

    stringten;

    inttuoi;

public:

    sinhvien(); // Đây là hàm khởi tạo

    ~sinhvien();

;

Các loại hàm khởi tạo

Hàm khởi tạo về cơ bản sẽ được phân thành 3 loại:

Hàm khởi tạo không tham số (Cũng hoàn toàn có thể gọi là hàm tạo mặc định – Default Constructor )Hàm khởi tạo có tham số ( Parameterized Constructor )Hàm khởi tạo sao chép ( Copy Constructor )

Hàm khởi tạo không tham số C++Hàm khởi tạo không tham số ( Default Constructor )

Hàm tạo loại này sẽ không truyền vào bất kì một đối số nào

classsinhvien

private:

    stringten;

    inttuoi;

public:

    sinhvien()

    

        this->ten="";

        this->tuoi=0;

    

    ~sinhvien();

;

Như trong ví dụ trên, hàm tạo sinhvien() không hề có đối số nào được truyền vào.

Theo ý kiến riêng của tớ thì thông thường trong hàm loại này mình sẽ gán cho tất cả những thuộc tính về giá trị mặc định.

Trong ví dụ trên:

    Thuộc tính ten thuộc kiểu string mình sẽ đưa về mặc định là một chuối rỗng "".Thuộc tính tuoi thuộc kiểu int mình sẽ đưa về mặc định là 0.
Hàm khởi tạo có tham số ( Parameterized Constructor )

Với loại hàm tạo này ta hoàn toàn có thể truyền đối số cho chúng. Thông thường, những đối số này giúp khởi tạo một đối tượng khi nó được tạo.

Để khai báo một hàm khởi tạo có tham số chỉ việc thêm những tham số vào nó in như cách bạn thêm tham số bất kỳ hàm nào khác.Khi bạn xác định phần thân của hàm tạo, hãy sử dụng những tham số để khởi tạo đối tượng.

classsinhvien

private:

    stringten;

    inttuoi;

public:

    sinhvien(string param_ten,intparam_tuoi)

    

        this->ten=param_ten;

        this->tuoi =param_tuoi;

    

    ~sinhvien();

;

Sau khi khai báo hàm trong lớp, ta hoàn toàn có thể thuận tiện và đơn giản dùng nó bằng phương pháp truyền tham số trong khi khởi tạo đối tượng.

intmain()

    sinhvien obj("lap Trinh Khong Kho",5);// Ta truyền luôn tham số trong khi khới tạo đối tượng

Lưu ý:

    Khi một đối tượng được khai báo trong hàm khởi tạo có tham số, những giá trị ban đầu phải được truyền dưới dạng đối số cho hàm tạo.Cách khai báo đối tượng thông thường hoàn toàn có thể sẽ gây lỗi.
    Điều này nghĩa là thông thường để khai báo một đối tượng bạn sẽ khai báo bằng cú pháp:

Nhưng do hàm khởi tạo là hàm có tham số nên cú pháp sẽ phải là:

sinhvien obj("Lap Trinh Khong Kho",5);

    Các hàm khởi tạo hoàn toàn có thể được gọi một cách rõ ràng hoặc ngầm định.

    sinhvien obj=sinhvien("Lap Trinh Khong Kho",5);// Đây là cách rõ ràng

    sinhvien obj("Lap Trinh Khong Kho",5);// Đây là cách ngầm định


    Nhưng thông thường để tiết kiệm code thì tất cả chúng ta hay sử dụng những ngầm định hơn.
Công dụng của hàm khởi tạo có tham số
    Nó được sử dụng để khởi tạo những thành phần tài liệu rất khác nhau của những đối tượng rất khác nhau với những giá trị rất khác nhau khi chúng được tạo.Nó được sử dụng để nạp chồng những hàm khởi tạo.
    Nạp chồng? Có thể hiểu đơn giản là ta sẽ có nhiều hơn nữa một hàm khởi tạo trong cùng một lớp. Và phần này thì sẽ được mình trình bài trong bài sau nhé.
Hàm khởi tạo sao chép ( Copy Constructor )Hàm khởi tạo sao chép là gì?

Hàm khởi tạo sao chép là một hàm tạo mà tạo một đối tượng bằng việc khởi tạo nó với một đối tượng của cùng lớp đó, mà đã được tạo trước đó.

Một hàm khởi tạo sao chép sẽ có nguyên mẫu chung như sau:

    ClassName(constClassName&old_obj)

    

        // Code

    

Trong số đó Classname là tên gọi của lớp, old_obj là đối tượng cũ sẽ lấy làm gốc để sao chép sang đối tượng mới

Ví dụ đơn giản về hàm khởi tạo sao chép:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

/* Code by KingNNT */

#include

using namespacestd;

classPoint

private:

    intx,y;

public:

    Point(int x1,inty1)

    

        x=x1;

        y=y1;

    

    // Hàm khởi tạo sao chép

    Point(constPoint&p2)

    

        x = p2.x;

        y= p2.y;

    

    intgetX()returnx;

    intgetY() returny;

;

intmain()

    Point p1(10,15);// Hàm khởi tạo có tham số thông thường

    Point p2=p1;    // hàm khởi tạo sao chép được gọi ở đây

    cout<<"p1.x = "<< p1.getX()<<", p1.y = "<

    cout<< "p2.x = "<Hàm huỷ (Deconstructor)

Hàm huỷ là gì?

Hàm huỷ cũng là một hàm thành viên đặc biệt in như hàm tạo, nó được dùng để phá huỷ hoặc xoá một đối tượng trong lớp.

Hàm huỷ sẽ được gọi lúc nào?

Hàm hủy được gọi tự động khi một đối tượng thoát khỏi phạm vi của nó (Scope):

Một hiệu suất cao kết thúc.Chương trình kết thúc.Một khối chứa những biến cục bộ kết thúc.Một toán tử delete được gọi

Hàm huỷ khác những hàm thành viên thông thường ở đâu?

    Cũng giống với hàm tạo, hàm huỷ mang tên trùng với tên của lớp, nhưng điểm khác lạ ở đây là sẽ có thêm ~ ở đầu.Hàm huỷ là một hàm không còn đối số truyền vào, và cũng không trả về giá trị ( kể cả void)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

classsinhvien

private:

    stringten;

    inttuoi;

public:

    sinhvien()

    

        this->ten="";

        this->tuoi=0;

    

    ~sinhvien() // Đây là hảm huỷ

    

        this->ten="";

        this->tuoi=0;

    

Có thể có nhiều hơn nữa một hàm huỷ ở trong cùng một lớp không?

Câu trả lời ở đây là không nhé.
Khác với hảm khởi tạo, hàm huỷ hoàn toàn có thể có một và chỉ một mà thôi.

Khi nào thì ta cần tự định nghĩa một hàm huỷ?

Với C++ thì nếu ta không khai báo một hàm huỷ, trình biên dịch cũng tiếp tục tự định nghĩa một hàm huỷ. Thông thường thì hàm huỷ này hoạt động và sinh hoạt giải trí tương đối tốt, nhưng khi bài toán có sử dụng con trỏ, hoặc cấp phép bộ nhớ động thì ban nên khai báo một hàm huỷ riêng để tránh rỏ rỉ bộ nhớ.

Nhưng với bản thân mình thông thường mình vẫn sẽ khai báo một hàm huỷ mặc dầu có dùng con trỏ hay cấp phép động hay là không, và trong hàm huỷ đó mình sẽ đưa những thuộc tính của lớp về giá trị mặc định ( giống với hàm khởi tạo không tham số ).

Một hàm huỷ hoàn toàn có thể là một hàm ảo hay là không ?

Tất nhiên là có rồi. Và bạn hoàn toàn có thể xem rõ ràng: Tại đây

Bài viết của tớ xin được kết thúc tại đây. Mọi thể comment ở phía dưới nếu thấy bất kể điều gì không đúng chuẩn, hoặc đơn giản là muốn chia sẻ thêm những kiến thức và kỹ năng tới mọi người. Cảm ơn mọi người. Chào tạm biệt và hẹn hội ngộ !

Tài liệu tham khảo

GeeksforgeeksTutorialspoint Tải thêm tài liệu liên quan đến nội dung bài viết Hàm khởi tạo không tham số C++

Review Hàm khởi tạo không tham số C++ ?

Bạn vừa Read nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Video Hàm khởi tạo không tham số C++ tiên tiến nhất

Share Link Cập nhật Hàm khởi tạo không tham số C++ miễn phí

You đang tìm một số trong những Chia SẻLink Tải Hàm khởi tạo không tham số C++ miễn phí.

Thảo Luận thắc mắc về Hàm khởi tạo không tham số C++

Nếu sau khi đọc nội dung bài viết Hàm khởi tạo không tham số C++ vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha #Hàm #khởi #tạo #không #tham #số - Hàm khởi tạo không tham số C++ - 2022-09-28 19:42:21
Related posts:

Post a Comment

Previous Post Next Post

Discuss

×Close