01/10/2018, 11:12
Cách truyền con trỏ class vào trong hàm
Chào mọi người!
Mình đang học về con trỏ nhưng chưa hiểu rõ lắm nên có 1 vài thắc mắc như sau:
- Dùng con trỏ vào hàm thì có giúp chương trình chạy được nhanh hơn không?
- Có nên lúc nào cũng dùng con trỏ hay khi bắt buộc thì mới dùng?
- Mình muốn truyền class vào trong hàm nhưng không được. Khắc phục bằng cách nào? Code chương trình:
#include <iostream>
using namespace std;
class A
{
public:
float diemTB()
{
return 1.0;
}
};
void foo(A *data[])
{
cout << data[0]->diemTB();
}
int main()
{
A a[2];
foo(a); //error
system("pause");
return 0;
}
Bài liên quan
Hello bạn
Mình thấy ở hàm
foo
thì bạn bỏ vào là một A* [] nhưng ở hàm main bạn chỉ khai báo là A[] thôi nên khi đưa vào hàm foo no sẽ sai kiểu nhận vào. Cách khắc phục là khai báo biến a thành con trỏ. À bạn cần phân biệt giữa class và object của class. Ví dụ cho dễ hiểu nhé:Theo đoạn code trên thì Man là một class, còn biến walkalone2305 là một đối tượng tạo ra từ class Man.
Đồng thời mình trả lời giúp bạn hai câu kia.
1.Nếu bạn cho con trỏ vào thì chương trình vẩn coppy biến của bạn ra chổ khác và thực hiện trên biến này nên mình nghĩ khi cho pointer vào cũng không giúp chương trình nhanh thêm. Nếu bạn muốn nhanh thì bạn cho địa chỉ của biến vào (&), khi cho địa chỉ vào thì chương trình sẽ không coppy biến đó ra vùng nhớ mới nên sẽ nhanh hơn.
2.Khi nào cần dùng pointer thì mình nghĩ khi biến đó là một kiểu mảng.