Truyền một lớp cho một hàm C++
Sau khi một hàm được khai báo và định nghĩa, nó có thể được gọi từ bất kỳ đâu trong chương trình. từ bên trong hàm Show
Bạn có thể truyền đối số cho các hàm được gọi theo ba cách.
Trình biên dịch tạo ra lỗi khi đối số hàm là đối tượng lớp và tất cả các điều kiện sau đều đúng
Một đối tượng có thể được truyền vào một hàm giống như chúng ta truyền một cấu trúc cho một hàm. chúng ta có thể truyền đối tượng của một lớp khác cho một hàm của một lớp khác. Chúng ta có thể chuyển các đối tượng của lớp làm đối số và trả về chúng từ một hàm Khi chúng ta muốn khởi tạo tất cả các thành viên dữ liệu của một đối tượng với một đối tượng khác, chúng ta có thể truyền các đối tượng và gán các giá trị của một đối tượng được cung cấp cho đối tượng hiện tại. Đối với các dự án phức tạp hoặc lớn, chúng ta cần sử dụng các đối tượng làm đối số hoặc tham số. Vì vậy, đây là câu hỏi. Mục lục Đối tượng là gì?Một Đối tượng là một thể hiện của Lớp. Khi một lớp được định nghĩa, không có bộ nhớ nào được cấp phát nhưng khi nó được thể hiện thì có nghĩa là một đối tượng được tạo và bộ nhớ được cấp phát. Khai báo đối tượng. Khi một lớp được khởi tạo, chỉ đặc tả cho đối tượng được xác định; . Để sử dụng các hàm truy cập và dữ liệu được định nghĩa trong lớp, bạn cần tạo các đối tượng cú pháp ClassName Tên đối tượng; một lớp học là gì?Một lớp là một khuôn mẫu tương tự như một bản thiết kế liên kết các thuộc tính và chức năng của một thực thể. Bạn có thể gán tất cả các thực thể hoặc đối tượng có các thuộc tính tương tự dưới một mái nhà duy nhất, được gọi là một lớp. Chúng có thể triển khai thêm các khái niệm cốt lõi như đóng gói, ẩn dữ liệu và trừu tượng hóa. Trong C++, một lớp hoạt động như một kiểu dữ liệu có thể có các đối tượng hoặc các thể hiện khác nhau của kiểu lớp.
Tạo một lớp gọi là “MyCycle”
Để tạo một đối tượng của MyCycle, hãy chỉ định tên lớp và hành động theo tên đối tượng Để truy cập các thuộc tính của lớp (myNumb và myString), hãy sử dụng cú pháp dấu chấm (. ) trên đối tượng Ví dụ 1 Tạo một đối tượng có tên là “myObj” và truy cập các thuộc tính
đầu ra
Truyền đối tượng làm đối sốCác đối tượng của một lớp có thể được truyền dưới dạng đối số cho các hàm thành viên cũng như các hàm không phải thành viên theo giá trị hoặc theo tham chiếu. chúng ta có thể truyền các đối tượng của lớp làm đối số và cũng có thể trả về chúng từ một hàm giống như cách chúng ta truyền và trả về các biến khác. Không có từ khóa đặc biệt hoặc tập tin tiêu đề được yêu cầu Một bản sao của đối tượng thực được tạo bên trong hàm khi một đối tượng được truyền theo giá trị. Bản sao này bị hủy khi chức năng kết thúc. Ngoài ra, bất kỳ thay đổi nào được thực hiện đối với bản sao của đối tượng bên trong hàm đều không được phản ánh trong đối tượng thực tế Mặt khác, chỉ một tham chiếu đến đối tượng đó (không phải toàn bộ đối tượng) được truyền cho hàm theo tham chiếu truyền qua. Do đó, những thay đổi được thực hiện đối với đối tượng trong hàm cũng được phản ánh trong đối tượng thực tế. Không có từ khóa đặc biệt hoặc tệp tiêu đề được yêu cầu để làm như vậy Bất cứ khi nào một đối tượng của một lớp được chuyển đến một hàm thành viên của cùng một lớp, các thành viên dữ liệu của nó có thể được truy cập bên trong hàm bằng cách sử dụng tên đối tượng và toán tử dấu chấm. Tuy nhiên, các thành viên dữ liệu của đối tượng gọi có thể được truy cập trực tiếp bên trong hàm mà không cần sử dụng tên đối tượng và toán tử dấu chấm Để chuyển một đối tượng làm đối số, chúng ta viết tên đối tượng làm đối số trong khi gọi hàm giống như cách chúng ta thực hiện đối với các biến khác cú pháp.
Trả lại đối tượng làm đối sốĐối tượng trả về sẽ được lưu trữ trong một biến đối tượng khác cú pháp
Ví dụ #2
đầu ra
Trong ví dụ này, chúng ta có thể thấy cả hai điều đó là cách chúng ta có thể chuyển các đối tượng cũng như trả lại chúng. Khi đối tượng T3 gọi hàm add, nó chuyển hai đối tượng khác là T1 & T2 làm đối số. Bên trong hàm, một đối tượng khác được khai báo để tính tổng của cả ba biến và trả về T3.
Chúng ta cũng có thể truyền một đối tượng làm đối số trong hàm thành viên của lớp. Điều này rất hữu ích, khi chúng ta muốn khởi tạo tất cả các thành viên dữ liệu của một đối tượng với một đối tượng khác, chúng ta có thể truyền đối tượng và gán giá trị của đối tượng được cung cấp cho đối tượng hiện tại Đối với các dự án phức tạp hoặc lớn, chúng ta cần sử dụng các đối tượng làm đối số hoặc tham số Ví dụ #3
đầu ra ________số 8_______Làm cách nào để truyền đối tượng vào hàm?Có bốn cách truyền đối tượng cho hàm. Giả sử bạn có một lớp X và muốn chuyển nó vào một hàm Vượt qua giá trịĐiều này tạo ra một bản sao nông cục bộ của đối tượng trong phạm vi chức năng. Những thứ bạn sửa đổi ở đây sẽ không được phản ánh trong đối tượng được truyền cho nó. Ví dụ, Tuyên ngôn
Chuyển qua tham chiếuĐiều này chuyển một tham chiếu đến đối tượng đến hàm. Những thứ bạn sửa đổi ở đây sẽ được phản ánh trong đối tượng được truyền cho nó. Không có bản sao nào của đối tượng được tạo. Ví dụ, Tuyên ngôn 0Vượt qua tham chiếu constĐiều này chuyển tham chiếu 'const' đến đối tượng cho hàm. Bạn không thể trực tiếp sửa đổi/gán lại đối tượng ở đây (bạn có thể sử dụng các phương thức của nó để làm như vậy). Điều này hữu ích nếu bạn muốn chức năng chỉ có một bản sao chỉ đọc của đối tượng. Không có bản sao nào của đối tượng được tạo Tuyên ngôn 1Chuyển qua con trỏ constĐiều này chuyển một con trỏ const tới đối tượng cho hàm. Bạn không thể sửa đổi/gán lại con trỏ ở đây Điều này hữu ích nếu bạn muốn hàm chỉ có địa chỉ của đối tượng này trong con trỏ. Không có bản sao nào của đối tượng được tạo Tuyên ngôn 2Đi qua con trỏĐiều này chuyển một con trỏ tới đối tượng tới hàm. Điều này tương tự như chuyển một tham chiếu đến đối tượng. Không có bản sao nào của đối tượng được tạo Tuyên ngôn 3Bản tóm tắtBạn đã học về lớp và đối tượng, cách coi đối tượng là đối số của hàm. Không chỉ vậy , bạn còn học cách trả lại đối tượng sau khi chức năng kết thúc. Nó khá hữu ích để truyền các đối tượng thông qua chức năng, thay vì các thành viên riêng lẻ. Nhưng chi phí gửi bất kỳ đối tượng lớn nào cao khi bạn sao chép mã Do đó, chúng ta đã thảo luận về nhiều phương pháp truyền toàn bộ đối tượng thông qua hàm với bộ nhớ tối thiểu. Trong các bài viết tiếp theo, chúng ta sẽ khám phá thêm về chủ đề này Một lớp có thể là một tham số hàm không?class là từ khóa chỉ được sử dụng* để giới thiệu các định nghĩa về lớp. Khi bạn khai báo các thể hiện của lớp mới dưới dạng đối tượng cục bộ hoặc dưới dạng tham số chức năng, bạn chỉ sử dụng tên của lớp (phải nằm trong phạm vi) chứ không phải chính từ khóa lớp.
Làm thế nào được chuyển đến một chức năng?Truyền con trỏ tới hàm
. by passing its address to that function; In simple terms, it could be achieved via pointers.
Các lớp có thể được truyền theo giá trị trong C++ không?Mọi thứ được truyền theo giá trị trong C++ . Để chuyển thứ gì đó bằng cách tham chiếu, bạn cần chuyển nó bằng công cụ sửa đổi &.
Làm thế nào các đối tượng có thể được sử dụng làm đối số chức năng?Đối tượng dưới dạng đối số hàm trong C++
. Khi một đối tượng được truyền theo giá trị, một bản sao của đối tượng thực được tạo bên trong hàm. Bản sao này bị hủy khi chức năng kết thúc. The objects of a class can be passed as arguments to member functions as well as nonmember functions either by value or by reference. When an object is passed by value, a copy of the actual object is created inside the function. This copy is destroyed when the function terminates. |