Kẻ hủy diệt C++
Constructor và Destructor là các hàm thành viên đặc biệt của lớp được tạo bởi trình biên dịch C++ hoặc có thể được định nghĩa bởi người dùng. Hàm khởi tạo được sử dụng để khởi tạo đối tượng của lớp trong khi hàm hủy được gọi bởi trình biên dịch khi đối tượng bị hủy Show
Constructor trong C++ là gì?Hàm tạo là một hàm thành viên đặc biệt của một lớp và có cùng tên với tên của lớp, có nghĩa là hàm tạo và lớp có cùng tên. Constructor được gọi bởi trình biên dịch bất cứ khi nào đối tượng của lớp được tạo, nó cấp phát bộ nhớ cho đối tượng và khởi tạo các thành viên dữ liệu của lớp theo giá trị mặc định hoặc giá trị do người dùng truyền vào khi tạo đối tượng. Các hàm tạo không có bất kỳ kiểu trả về nào vì công việc của chúng chỉ là tạo và khởi tạo một đối tượng Cú pháp cơ bản của Constructor trong C++ là gì?Cú pháp cơ bản của hàm tạo được đưa ra dưới đây
Theo cú pháp trên, chúng ta có thể thấy lớp có tên_tên_lớp và hàm tạo cũng có cùng tên. Một hàm tạo có thể có bất kỳ số lượng tham số nào theo yêu cầu. Ngoài ra, không có kiểu trả về hoặc giá trị trả về của hàm tạo. Những điểm quan trọng về Constructortruy cập specifiersConstructor có thể được xác định là công khai, được bảo vệ hoặc riêng tư theo yêu cầu. Theo mặc định hoặc các hàm tạo mặc định, được tạo bởi trình biên dịch và được khai báo là công khai. Nếu hàm tạo được tạo ở chế độ riêng tư, thì chúng ta không thể tạo đối tượng của nó. di sảnVì một lớp dẫn xuất có thể truy cập tất cả các thuộc tính công khai của lớp cơ sở, nó cũng có thể gọi hàm tạo của nó nếu nó không được khai báo là riêng tư. Ngoài ra, địa chỉ của người xây dựng không thể được tham chiếu ẢoConstructor trong C++ không thể khai báo là ảo vì khi chúng ta khai báo bất kỳ hàm nào của một lớp là hàm ảo thì lúc biên dịch trình biên dịch sẽ tạo một bảng ảo để lưu địa chỉ của từng hàm được khai báo là ảo. Ngoài ra, nó tạo một thành viên dữ liệu của con trỏ ảo của lớp để trỏ tới bảng ảo. Nhưng như chúng ta đã thảo luận, chúng ta không thể tham chiếu đến địa chỉ của hàm tạo, điều đó có nghĩa là chúng ta không thể khai báo hàm tạo là ảo Có bao nhiêu loại Constructor trong C++?Có bốn loại hàm tạo trong C++
Hãy thảo luận chi tiết về chúng Trình tạo mặc địnhHàm tạo mặc định còn được gọi là hàm tạo đối số không, vì nó không nhận bất kỳ tham số nào. Nó có thể được xác định bởi người dùng nếu không thì trình biên dịch sẽ tự tạo ra nó. Hàm tạo mặc định luôn khởi tạo các thành viên dữ liệu của lớp có cùng giá trị mà chúng được xác định cú pháp
Mã để hiển thị hoạt động của hàm tạo mặc định
đầu ra
Trong đoạn mã trên, chúng tôi đã tạo một lớp có hai thành viên dữ liệu. Khai báo một hàm tạo mặc định luôn khởi tạo các đối tượng của một lớp có cùng tên và tuổi. Trong chức năng chính, chúng tôi đã tạo một đối tượng của lớp và in các giá trị thành viên dữ liệu của nó bằng cách sử dụng chức năng hiển thị Trình xây dựng được tham số hóaHàm tạo được tham số hóa được sử dụng để khởi tạo các thành viên dữ liệu với các giá trị do người dùng cung cấp. Hàm tạo này về cơ bản là phiên bản nâng cấp của hàm tạo mặc định. Chúng ta có thể định nghĩa nhiều hơn một hàm tạo được tham số hóa theo nhu cầu của người dùng, nhưng chúng ta phải tuân theo các quy tắc nạp chồng hàm, chẳng hạn như phải có một bộ đối số khác nhau cho mỗi hàm tạo cú pháp
Mã để hiểu hoạt động của hàm tạo được tham số hóa
đầu ra
Trong đoạn mã trên, chúng tôi đã tạo ba loại hàm tạo tham số, một loại chỉ khởi tạo tên, thứ hai chỉ khởi tạo tuổi và thứ ba để khởi tạo cả tên và tuổi. Trong chức năng chính, chúng tôi đã tạo ba loại đối tượng khác nhau và khởi tạo chúng theo những cách khác nhau và in các giá trị cho từng loại. Trình tạo bản saoNếu chúng ta có một đối tượng của một lớp và chúng ta muốn tạo bản sao của nó trong một đối tượng mới được khai báo của cùng một lớp, thì một hàm tạo bản sao được sử dụng. Trình biên dịch cung cấp cho mỗi lớp một hàm tạo bản sao mặc định và người dùng cũng có thể định nghĩa nó. Nó nhận một đối số duy nhất là một đối tượng của cùng một lớp cú pháp
Trong cú pháp trên, chúng ta đã tạo một hàm tạo sao chép lấy một đối tượng cùng lớp làm tham số nhưng nó được khai báo là hằng số và được truyền dưới dạng tham chiếu bởi vì khi một đối số được truyền dưới dạng tham số hàm, nó sẽ tạo một bản sao cho nó, để tạo trình biên dịch sao chép đó sẽ gọi lại hàm tạo bản sao, có nghĩa là nó sẽ gọi cùng một chức năng và đối với cuộc gọi đó một lần nữa, sẽ có một lệnh gọi để tạo bản sao sẽ thực hiện quá trình này trong quá trình tạo bản sao không bao giờ kết thúc. Để ngăn chặn các điều kiện như vậy, chúng tôi chuyển nó làm tài liệu tham khảo Mã để hiểu hoạt động của hàm tạo bản sao ________số 8đầu ra
Trong đoạn mã trên, chúng ta đã tạo một lớp và định nghĩa hai loại hàm tạo trong đó, loại thứ nhất là hàm tạo được tham số hóa và loại khác là hàm tạo sao chép. Hàm tạo được tham số hóa được sử dụng để tạo một đối tượng, sau đó bằng cách sử dụng hàm tạo bản sao, chúng tôi tạo một bản sao của nó và lưu trữ nó trong một đối tượng khác Trình tạo độngKhi bộ nhớ được phân bổ động cho các thành viên dữ liệu trong thời gian chạy bằng toán tử mới, hàm tạo được gọi là hàm tạo động. Hàm tạo này tương tự như hàm tạo mặc định hoặc được tham số hóa; cú pháp 0Mã để hiểu hoạt động của hàm tạo động ________mười mộtđầu ra 2Trong đoạn mã trên, chúng ta đã tạo một lớp với hàm tạo động. Trong chức năng chính, chúng tôi đã tạo một đối tượng và khởi tạo nó bằng cách sử dụng hàm tạo động, trong đó chúng tôi đã cung cấp bộ nhớ động bằng cách sử dụng toán tử mới Trình hủy trong C ++ là gì?Destructor chỉ là chức năng ngược lại của constructor. Một hàm hủy được trình biên dịch gọi khi đối tượng bị hủy và chức năng chính của nó là giải phóng bộ nhớ của đối tượng. Đối tượng có thể bị hủy khi chương trình kết thúc hoặc các đối tượng cục bộ của hàm nằm ngoài phạm vi khi hàm kết thúc hoặc trong bất kỳ trường hợp nào khác. Cú pháp cơ bản của Destructor là gì?Cú pháp cơ bản của Destructor được đưa ra dưới đây 3Theo cú pháp trên ta có thể thấy lớp có tên_tên_lớp và hàm hủy cũng có cùng tên, ngoài ra còn có dấu ngã(~). Ngoài ra, không có kiểu trả về và giá trị trả về của hàm hủy. Những điểm quan trọng về Kẻ hủy diệt
Cách Constructor và Kẻ hủy diệt được gọi khi đối tượng được Tạo và HủyVì hàm tạo là hàm đầu tiên được trình biên dịch gọi khi một đối tượng được tạo và hàm hủy là thành viên lớp cuối cùng được trình biên dịch gọi cho một đối tượng. Nếu hàm tạo và hàm hủy không được người dùng khai báo, trình biên dịch sẽ xác định hàm tạo và hàm hủy mặc định của một đối tượng lớp. 4đầu ra ________mười lămTrong đoạn mã trên, chúng ta đã tạo một lớp có hàm tạo và hàm hủy. Trong hàm chính, một đối tượng sử dụng hàm tạo tham số và khi chương trình kết thúc, hàm hủy sẽ được trình biên dịch tự động gọi và chúng ta nhận được các giá trị của các biến của mình Phần kết luận
C++ Constructor trong cpp Destructor trong cpp Lập trình C Học c bài báo cáo Thưởng thức bài viết này? 4 hợp tác Rohan Rai Công nghệ Blogger và nhà tiếp thị nội dung Tôi đam mê lập trình và thích nói về C, CPP, JS, Python. Tôi là một người ham học hỏi và đam mê du lịch theo Khám phá và đọc thêm các bài viết từ Rohan Rai bắt đầu Thưởng thức bài viết này? Để lại một lượt thích và bình luận cho Rohan 4 Hãy là người đầu tiên chia sẻ ý kiến của bạnHỗ trợ đánh dấu hương vị GitHub Gửi đi Anthony Anderson 9 tháng trước Rohan, Chỉ cho bạn biêt thôi. hàm tạo động của bạn bị rò rỉ bộ nhớ trong đó Người(int* person_age) cout << "Constructor cho tuoi duoc goi" < tuổi = int mới; tuổi = người_tuổi; . Bộ nhớ heap ban đầu được phân bổ trước đó không còn có thể được truy cập. Bộ nhớ bị “rò rỉ” } Chỉ cần nghĩ rằng bạn muốn biết Hồi đáp Rohan Rai 9 tháng trước Này Anton, Cảm ơn nhận xét của bạn, bạn có một điểm hợp lệ Ý định của tôi chỉ là chỉ ra cách chúng ta có thể cấp phát bộ nhớ động cho bất kỳ biến dữ liệu nào trong hàm tạo động |