Chủ đề: ctor c++
-
08-12-2014, 01:43 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
ctor c++
Mã:// viet the nay class A{ int a; float b;public: A(int x, float y){ a =x; b = y; }}; // hay viet la class A{ int a; float b;public: A(int x, float y):a(x), b(y){}};
từng nghe nói là nên viết kiểu thứ 2 chỉ trừ trường hợp bất khả kháng.
vậy trường hợp bất khả kháng đó là khi nào.
Mã:template<class A> template<typename A>
trường hợp nào thì không thể dùng cái nào. có cái nào dùng được cho mọi trường hợp không ạ.
mong mn chỉ giúp.
[IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]View more random threads:
- [hỏi]: Cách nối một chuỗi với 1 ký tự
- Tạo tiêu đề trong C như thế nào?
- Về hàm đối xứng
- Về công thức Heron.
- Sin(x) theo Taylor
- tách mảng thành mảng mới theo chiều dài quy định
- Cần các bạn giúp làm bài tập kỹ thuật đồ họa.
- Phân số tối giản.
- Hàm tính độ dài của xâu trong c++
- stdin ,stdout , stderr , stdpn , bộ nhớ đệm là gì ....
-
08-12-2014, 02:49 PM #2Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Viết theo cách thứ 2 nhé: http://www.parashift.com/c++-faq-lite/init-lists.html
Còn cái template thì cả hai đều như nhau, nhưng nên dùng typename thay vì class để tránh hiểu nhầm.
-
09-12-2014, 11:15 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nếu không vướng mắc một số trường hợp ngoại lệ ( như lớp có thành phần hằng ...), thì nên viết theo cách 1 sẽ rất dễ nhìn, đặc biệt là các bạn từ C chuyển sang C++. Cách viết thứ 2 chỉ nên tham khảo khi cách 1 không đáp ứng được.
-
09-12-2014, 11:51 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi MHoang
-
09-12-2014, 12:34 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- hà nội
- Bài viết
- 0
Không thể nói đây là nguyên tắc được mà là sự thông dụng dễ dùng. Mình biết khi nêu vấn đề ra sẽ gặp nhiều ý kiến trái chiều. Viết theo cách 2 có xu hướng làm cho mã khó hiểu. Về hình thức, khi số lượng biến thành viên tăng lên nhiều thì bắt đầu khó nghĩ, viết khởi tạo trên cùng dòng thì quá dở mà nhiều dòng thì có khác gì tự đề cao cách 1. Về cú pháp, dấu "=" có chức năng rõ ràng hơn, cặp dấu ngoặc thì lại được sử dụng trong rất nhiều ngữ cảnh. Tóm lại, mình thấy cái gì càng đơn giản thì càng nên sử dụng, mời các bạn tiếp tục. Thân.
-
09-12-2014, 01:02 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi MHoang
Bạn có thể cho mình nhận xét xem viết thế này có khó hiểu, khó đọc ko?
Mã:class Sample{private: int var1; int var2; float var3; float var4; std::string str; std::vector<int> vec;public: Sample() : var1{1} , var2{2} , var3{3.f} , var4{4.5f} , str{"Hello, world"} , vec{1, 2, 3, 4} { } };
-
09-12-2014, 01:34 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Đúng như bạn nói, 2 cách không chỉ khác về cú pháp ( mình cũng đã nói ở #3 phía trên). Mình không lạ gì với cú pháp này, link của boss14420 cũng tương tự như các link khác và các tài liệu mà mình đã xem qua. Cách viết của bạn không có gì khó hiểu và khó đọc cả, bạn không cần chứng minh điều đó. Điều mình muốn nói là cách viết 2 có xu hướng làm phức tạp hóa những dòng lệnh đơn giản.
Nếu phải chọn trước khi vào bên trong
Mã:: var1{1}
Mã:var1 = 1;
-
09-12-2014, 02:22 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Đồng ý là primitive cũng có constructor, nhưng đâu phải cứ có là dùng đâu.
Viết bằng dấu = sẽ dễ đọc hơn.
-
09-12-2014, 02:24 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình ko nghĩ khởi tạo một biến lại phức tạp hơn gán 1 biến. Theo mình thấy thì cách 2 luôn được sử dụng trong các thư viện C++ uy tín như qt hay boost.
Nhưng thôi, tùy mỗi người vậy.
-
09-12-2014, 03:11 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
- Nhanh hơn (hay ỉt ra là không bao giờ chậm hơn), trong link đã giải thích.
- Dùng được cho mọi trường hợp. VD: nếu thành phần của lớp là kiểu const hoặc kiểu tham chiếu thì tính sao?
- "Phức tạp"? Chả hiểu phức tạp ở chỗ nào, thực sự thì phép gán mới là thứ phức tạp hơn phép khởi tạo. Bởi vì có thể có ai đó overloading toán tử gán thì sao? Phép khởi tạo người ta nghĩ ra chỉ có một mục đích là khởi tạo, còn phép gán thì còn rất nhiều thứ khác nữa.
Nói chung là chả có lý do gì để dùng cách thứ nhất cả.
Vệ sinh cá nhân là một phần quan yếu của sức khỏe nam giới. Dùng dung dịch vệ sinh mỗi ngày mang lại nhiều ích, giúp loại bỏ vi khuẩn và vi sinh vật gây hại, giúp khu vực cơ quan sinh dục luôn sạch...
Gel vệ sinh cu, bạn trai có nên...