-
10-10-2013, 11:16 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi prog10Mã:vector& vector::operator=(vetor &a){ // một số lệnh gì gì đó return (*this)}
View more random threads:
- [ Solved ]Hỏi về lớp bao(wrapped class) trong C++
- Xin chuyển dùng code C sang vb6
- Bài tập C | tính tích 2 ma trận, sửa giúp mình với?
- Chạy tay thuật toán RadixSort
- Lập trình theo thời gian !!!
- Lỗi load ảnh bằng D3DXLoadSurfaceFromFile()!!!
- Kiểm tra lỗi đọc tệp nhị phân giúp mình với.
- mọi người giúp minh code khong loi, khi chạy chương trinh chạy binh thường. nhưng sinh vien 1 khong cho nhap điểm thứ 3.
- Khắc phục toàn tử delete trong hàm hủy.
- Bài tập nhập môn hướng đối tượng C++ (Các sư huynh làm hộ đệ với)
-
10-10-2013, 05:42 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
định nghĩa toán tử = cho ma trận ?
khi em đọc trong giáo trình C++ của thầy Phạm Văn Ất thì có đoạn như thế này ạ:
"nếu giá trị trả về của hàm toán tử gán là kiểu void thì không thể thực hiện phép gán a=b=c.".
nhưng mà khi em đi thực hành có bài xây dựng lớp ma trận như sau :
Mã:class vector{ private: int n; float *v; public: void operator =(vector &a); // Phép gán };
-
10-10-2013, 05:45 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
vector& vector:perator=(vetor &a)
vector a = ...;
vector b = ...;
vector c = ...;
const vector d = ...;
a = b = c; //được
a = d; //ko được
a = b = d; //ko được
-
10-10-2013, 06:04 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
b=a; tương đương với b.operator=(a);
Còn c=b=a thì rõ ràng ko đc rồi, vì đọc từ phải sang trái nên nếu b=a trả về void thì c được gán kiểu void, lỗi biên dịch.
-
11-10-2013, 01:29 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn có thể nói rõ hơn cho mình tại sao với const vector d lại không được không
-
11-10-2013, 02:40 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
vì định nghĩa kiểu này
vector& vector:perator=(vetor &a)
truyền reference a tức là phép gán = này đòi a thay đổi được. Trong khi b = a thì phép gán = ko hề thay đổi thuộc tính của a. Nếu a là hằng thì ko thể sử dụng trong phép gán trên được vì nó đòi a phải thay đổi được (mà hằng số thì ko đổi)
vector& vector:perator=(vetor a) //ok, nhưng chậm.
vector& vector:perator=(const vetor& a) //ok, nhanh.
-
11-10-2013, 02:57 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tại sao khi mình khai báo
Mã:const vector c;
uninitialized const `c'
Mã:vector& vector::operator=(vector a){ (*this).x=a.x; (*this).y=a.y; return (*this);}
vector b = ...;
vector c = ...;
const vector d = ...;
a=b=c=d có được không?
-
11-10-2013, 03:07 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Có khai báo const int N; mà ko phải là const int N = 10; có '= ...' phía sau bao giờ chưa @.@ Hằng số mà ko có giá trị thì là hằng số gì?
đương nhiên là được. Nhưng chậm hơn const& vì phải copy biến truyền vào qua 1 biến tạm a (xài tới copy ctor).
Khi nào xài tham trị: khi giá trị truyền vào cần thay đổi, nhưng biến truyền vào ko thay đổi.
Khi nào xài const&: khi giá trị truyền vào ko thay đổi, và biến truyền vào cũng ko thay đổi.
phép gán thì chỉ yêu cầu biến truyền vào bên vế phải ko thay đổi nên có thể xài cả tham trị lẫn const&. Nếu kĩ hơn thì const& vẫn đúng hơn (và có bonus là lẹ hơn)
-
11-10-2013, 03:12 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Vâng. Câu đầu em nhầm ợ. Dốt quá
-
11-10-2013, 06:25 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Để tốc độ cao hơn nữa thì nên làm thêm hàm này:
Mã:vector& operator= (vector && m) ;
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...