Hướng dẫn c++ pass object by value - C++ truyền đối tượng theo giá trị
Một câu hỏi đơn giản mà tôi không thể tìm thấy câu trả lời ở đây. Show Điều tôi hiểu là trong khi chuyển một đối số cho một hàm trong cuộc gọi, ví dụ:
Đối với các kiểu dữ liệu đơn giản như Nhưng nếu Nếu Vì vậy, trở lại câu hỏi. C ++ có chuyển một đối tượng bằng tham chiếu hoặc giá trị không?
hỏi ngày 19 tháng 1 năm 2014 lúc 10:10Jan 19, 2014 at 10:10
user3041058user3041058user3041058 1.4502 huy hiệu vàng11 Huy hiệu bạc16 Huy hiệu đồng2 gold badges11 silver badges16 bronze badges 9 Đối số được truyền theo giá trị, trừ khi chữ ký hàm chỉ định khác:
Trong trường hợp các mảng, giá trị được truyền là một con trỏ tới phần tử đầu tiên của mảng. Nếu bạn biết kích thước của mảng tại thời gian biên dịch, bạn cũng có thể vượt qua một mảng bằng cách tham khảo: Đã trả lời ngày 19 tháng 1 năm 2014 lúc 10:14Jan 19, 2014 at 10:14
3 C ++ luôn cung cấp cho bạn sự lựa chọn: Tất cả các loại Khi loại tham số không được chú thích rõ ràng là tham chiếu ( Mảng phức tạp hơn một chút. Các mảng không thể được truyền theo giá trị, các loại tham số như Đã trả lời ngày 19 tháng 1 năm 2014 lúc 10:18Jan 19, 2014 at 10:18 3 C ++ làm cho cả vượt qua giá trị và vượt qua các mô hình tham chiếu có thể. Bạn có thể tìm thấy hai cách sử dụng ví dụ dưới đây. http://www.learncpp.com/cpp-tutorial/72-passing-arguments-by-value/ http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/ Các mảng là các cấu trúc đặc biệt, khi bạn chuyển một mảng làm tham số, một con trỏ đến địa chỉ của phần tử đầu tiên được truyền dưới dạng giá trị với loại phần tử trong mảng. Khi bạn vượt qua một con trỏ dưới dạng tham số, bạn thực sự sẽ tự thực hiện mô hình tham chiếu, như trong C. bởi vì khi bạn sửa đổi dữ liệu trong địa chỉ được chỉ định, bạn sẽ sửa đổi chính xác đối tượng trong hàm người gọi. Đã trả lời ngày 19 tháng 1 năm 2014 lúc 10:22Jan 19, 2014 at 10:22
McVKrmcvkrmcvkr 2.7096 Huy hiệu vàng36 Huy hiệu bạc62 Huy hiệu Đồng6 gold badges36 silver badges62 bronze badges Trong C ++, các loại được khai báo là một lớp, struct hoặc liên minh được coi là "loại lớp". Chúng được truyền theo giá trị hoặc bạn có thể nói một bản sao sử dụng trình xây dựng bản sao được truyền cho các chức năng. Điều này khá rõ ràng khi chúng tôi thực hiện các cây nhị phân trong đó bạn hầu như luôn có một loại param nút * trong hàm đệ quy tác dụng trên cây nhị phân. Điều này là để tạo điều kiện sửa đổi nút đó. Nếu nút được truyền như là (tức là không phải là loại con trỏ), các sửa đổi cho các nút sẽ được gửi đến bản sao cục bộ. Ngay cả trong trường hợp của các vectơ, trong khi chuyển một bản sao của các vectơ được truyền cho các hàm, để tránh chúng tôi sử dụng tham chiếu &.
Đã trả lời ngày 3 tháng 8 năm 2019 lúc 12:57Aug 3, 2019 at 12:57
C ++ chuyển các đối số không phải là con trỏ (int*) hoặc tài liệu tham khảo (int &) theo giá trị. Bạn không thể sửa đổi VAR của khối gọi trong hàm được gọi. Mảng là gợi ý. Đã trả lời ngày 19 tháng 1 năm 2014 lúc 10:17Jan 19, 2014 at 10:17
Scraatzscraatzscraatz 4092 Huy hiệu bạc7 Huy hiệu đồng2 silver badges7 bronze badges 10 Bạn có thể vượt qua một đối tượng theo giá trị?Giá trị của đối tượng có thể thay đổi có thể được thay đổi khi nó được chuyển sang phương thức. Giá trị của một đối tượng bất biến không thể thay đổi, ngay cả khi nó được truyền một giá trị mới. Vượt qua giá trị của người Viking đề cập đến việc chuyển một bản sao của giá trị. Vượt qua bằng cách tham chiếu, đề cập đến việc truyền tham chiếu thực của biến trong bộ nhớ.“Passing by value” refers to passing a copy of the value. “Passing by reference” refers to passing the real reference of the variable in memory.
C có sử dụng vượt qua giá trị không?C luôn sử dụng 'truyền giá trị' để chuyển các đối số sang các hàm (một thuật ngữ khác là 'cuộc gọi theo giá trị', có nghĩa là cùng một thứ), có nghĩa là mã trong một hàm không thể thay đổi các đối số được sử dụng để gọi hàm, ngay cả khiCác giá trị được thay đổi bên trong hàm. (another term is 'call by value', which means the same thing), which means the code within a function cannot alter the arguments used to call the function, even if the values are changed inside the function.
Bạn có thể chuyển một đối tượng theo giá trị trong C ++ không?C ++ làm cho cả vượt qua giá trị và vượt qua các mô hình tham chiếu có thể.Bạn có thể tìm thấy hai cách sử dụng ví dụ dưới đây.Các mảng là các cấu trúc đặc biệt, khi bạn chuyển một mảng làm tham số, một con trỏ đến địa chỉ của phần tử đầu tiên được truyền dưới dạng giá trị với loại phần tử trong mảng.. You can find two example usages below. Arrays are special constructs, when you pass an array as parameter, a pointer to the address of the first element is passed as value with the type of element in the array.
Các đối tượng được truyền trong C như thế nào?Các đối tượng là đối số hàm trong C ++ Các đối tượng của 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 là tháng theo giá trị hoặc theo tham chiếu.Khi một đối tượng được truyền theo giá trị, một bản sao của đối tượng thực tế được tạo bên trong hàm.Bản sao này bị phá hủy khi hàm chấm dứt. |