Monday, February 29, 2016

Contructor và Destructor trong C++

Class Contructor trong C++ (Default Constructor)


Một class contructor là một hàm thành viên đặc biệt của một lớp mà được thực thi bất cứ khi nào chúng ta tạo các đối tượng mới của lớp đó.

Một constructor sẽ có tên giống như lớp và nó không có bất kỳ kiểu trả về, kể cả kiểu void. Constructor có thể rất hữu ích để thiết lập các giá trị khởi tạo cho các biến thành viên cụ thể.

Ví dụ sau giải thích khái niệm contructor trong C++:
#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      void setChieuDai( double dai );
      double layChieuDai( void );
      Line();  // Day la constructor
 
   private:
      double chieudai;
};
 
// phan dinh nghia cac ham thanh vien, bao gom ca constructor
Line::Line(void)
{
    cout << "Doi tuong da duoc tao!" << endl;
}
 
void Line::setChieuDai( double dai )
{
    chieudai = dai;
}
 
double Line::layChieuDai( void )
{
    return chieudai;
}
// Ham main cua chuong trinh
int main( )
{
   Line line;
 
   // thiet lap chieu dai cua line
   line.setChieuDai(6.0); 
   cout << "Chieu dai cua duong la: " << line.layChieuDai() <<endl;
   system("pause");
   return 0;
}
 Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Constructor trong C++

Constructor được tham số hóa trong C++ (Paramater Constructor)

Một constructor mặc định trong C++ không có bất kỳ tham số nào, nhưng nếu bạn cần, một constructor có thể có các tham số. Điều này giúp bạn gán giá trị khởi tạo tới một đối tượng tại thời điểm tạo nó, như trong ví dụ sau:

#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      void setChieuDai( double dai );
      double layChieuDai( void );
      Line(double dai);  // Day la phan khai bao constructor
 
   private:
      double chieudai;
};
 
// phan dinh nghia cac ham thanh vien, bao gom constructor
Line::Line( double dai)
{
    cout << "Doi tuong dang duoc tao, chieudai = " << dai << endl;
    chieudai = dai;
}
 
void Line::setChieuDai( double dai )
{
    chieudai = dai;
}
 
double Line::layChieuDai( void )
{
    return chieudai;
}
// ham main cua chuong trinh
int main( )
{
   Line line(10.0);
 
   // lay chieu dai da duoc khoi tao ban dau.
   cout << "Chieu dai cua line la: " << line.layChieuDai() <<endl;
   // thiet lap chieu dai mot lan nua
   line.setChieuDai(6.0); 
   cout << "Chieu dai cua line la: " << line.layChieuDai() <<endl;
 
   return 0;
}

với Default Constructor thì hàm này sẽ được tư động chạy mà không cần tới sự gọi hàm.
Tuy nhien với Parameter Constructor hay Copy Constructor sau này thì những hàm này đều được called.

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Constructor trong C++


Sử dụng danh sách khởi tạo cho các trường khởi tạo


Trong trường hợp constructor được tham số hóa, bạn có thể sử dụng cú pháp sau để khởi tạo các trường.

Line::Line( double dai): chieudai(dai)
{
    cout << "Doi tuong dang duoc tao, chieudai = " << dai << endl;
}

Cú pháp trên là tương đương với cú pháp sau:

Line::Line( double dai)
{
    cout << "Doi tuong dang duoc tao, chieudai = " << dai << endl;
    chieudai = dai;
}

Nếu với một lớp trong C++, bạn có nhiều trường X, Y, Z, … để được khởi tạo, thì bạn có thể sử dụng cú pháp tương tự và phân biệt các trường bởi dấu phảy, như sau:
C::C( double a, double b, double c): X(a), Y(b), Z(c)
{
  ....
}

Class Destructor trong C++


Một destructor là một hàm thành viên đặc biệt của một lớp mà được thực thi bất cứ khi nào một đối tượng của lớp đó ra khỏi phạm vi hoặc bất cứ khi nào biểu thức delete được áp dụng tới một con trỏ tới đối tượng của lớp đó.
Một destructor sẽ có cùng tên với lớp và được đặt trước bỏi ký hiệu ~ và nó có thể: không trả về một giá trị và không nhận bất kỳ tham số nào. Destructor có thể rất hữu ích để giải phóng resource trước khi thoát khỏi chương trình, ví dụ: đóng file, giải phóng bộ nhớ, …
Ví dụ sau giải thích khái niệm về destructor trong C++:
#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      void setChieuDai( double dai );
      double layChieuDai( void );
      Line();   // Day la phan khai bao constructor 
      ~Line();  // Day la phan khai bao destructor
 
   private:
      double chieudai;
};
 
// phan dinh nghia ham thanh vien, bao gom constructor va destructor
Line::Line(void)
{
    cout << "Doi tuong dang duoc tao" << endl;
}
Line::~Line(void)
{
    cout << "Doi tuong dang bi xoa!" << endl;
}
 
void Line::setChieuDai( double dai )
{
    chieudai = dai;
}
 
double Line::layChieuDai( void )
{
    return chieudai;
}
// ham main cua chuong trinh
int main( )
{
   Line line;
 
   // Thiet lap chieu dai cua line
   line.setChieuDai(6.0); 
   cout << "Chieu dai cua line la: " << line.layChieuDai() <<endl;
 
   return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Destructor trong C++
















Posted By Thang Vuong 23:28

[Pointer] Swap 2 numbers - số bài toán điển hình

1. Bài toán đầu tiên là về swap 2 số: Có rất nhiều cách để hiện thực bài toán này, tuy nhiên bên dưới là 2 cách phổ biến nhất

cách 1: sử dụng trong bài toán khi nói về sự khác nhau khi truyển tham số hay truyền tham trị thì bải toán chuyển đổi 2 số rất hay được đưa ra ví dụ
Code:

Result:




Cách 2: đây là cách mà Tôi muốn nói tới hôm nay đó là sử dụng con trỏ, bản chất cũng là việc làm thay đổi địa chỉ của nó. các bạn xem bên dưới


Kêt quả thu được như bên dưới. chắc chắn rồi. 2 số được swap nhau


Posted By Thang Vuong 01:02

Thursday, February 25, 2016

[25.2.2016] TOEIC - VOCABULARY

1. command /kəˈmɑːnd/

2. prospect /ˈprɒspekt/

3.  apparent /əˈpærənt/

4. trading /ˈtreɪ.dɪŋ/

5. serve /sɜːv/

6. novel /ˈnɒvəl/

7. taste /teɪst/

8. extension /ɪkˈstenʃən/

9. rival /ˈraɪvəl/

10. assume /əˈsjuːm/


That is this for today. good night :-)

That is this for today. good night :-)

That is this for today. good night :-)



























Posted By Thang Vuong 22:36

[24.2.2016] Linh Tinh

Trong một tuần tới mình sẽ tạm thời giảm cường độ ôn TOEIC xuống 1 ngày chỉ còn 1 bài.

Lý do: Chuẩn bị cho kỳ thi Test đi Nhật Bản bên FPT Software nên cần ôn luyện lại kiến thức lập trình. chủ yếu là kiến thức lập trình C++. hơi buồn vì nó k có C. nên coi như học dòng family của nó vậy.

Nến các post tiếp theo mình sẽ nói về kiến thức C. trong 1 tuần thôi. chủ yếu là ôn luyện đề như đi thi đại học vậy. vãi thiệt :))). đúng là nản.

Vì bài test chủ yếu làm về đề trắc nghiệm nên các post tiếp theo ngoài các kiến thức nền và các topics đi theo. các bài post cũng sẽ bám sát vào thi trắc nghiệm.

Thank you, Thắng pro....hahhaa

Posted By Thang Vuong 00:01

Tuesday, February 23, 2016

[23.2.2016] [PART 3] TOEIC - VOCABULARY

1. criterion /kraɪˈtɪəriən/

2. spread /spred/

3. fairly /ˈfeəli/

4. estimate /ˈestɪmeɪt/

5. encourage /ɪnˈkʌrɪdʒ/

6. shift /ʃɪft/

7. exhibition /ˌeksɪˈbɪʃən/

8.  unique /juːˈniːk/

9.  assistance /əˈsɪstəns/

10. conduct /kənˈdʌkt/

11. preparation /ˌprepərˈeɪʃən/



Nothing much more =))

Nothing much more =))

Nothing much more =))





































Posted By Thang Vuong 23:58

[23.2.2016] [PART 2] TOEIC - VOCABULARY

1. Broad /brɔːd/

2. usual /ˈjuːʒuəl/

3. liberal /ˈlɪbərəl/

4. pension /ˈpenʃən/

5. formal /ˈfɔːməl/

6. desire /dɪˈzaɪər/

7. capacity /kəˈpæsəti/

8. advance /ədˈvɑːns/  (BrE); ədˈveːns/ (ArE)

9. crucial /ˈkruːʃəl/

10. accommodation /əˌkɒməˈdeɪʃən/
 
11. missing /ˈmɪsɪŋ/

12. minority /maɪˈnɒrəti/

This is the end for tonight :))
This is the end for tonight :))


































Posted By Thang Vuong 23:27

[23.2.2016] TOEIC - VOCABULARY

1. Dispute /ˈdɪspjuːt/

2. equivalent /ɪˈkwɪvələnt/

3. welfare /ˈwelfeər/

4. typical /ˈtɪpɪkəl/

5. represent /ˌreprɪˈzent/

6. corporation /ˌkɔːpərˈeɪʃən/

7. afford /əˈfɔːd/

8. contain /kənˈteɪn/


Thats this for tonight :-).
Thats this for tonight :-).
Thats this for tonight :-).
Thats this for tonight :-).





















Posted By Thang Vuong 23:02

Monday, February 22, 2016

[22.2.2016] [PART 2] TOEIC - VOCABULARY

1. Recognition /ˌrekəɡˈnɪʃən/

2. suitable /ˈsuːtəbl/

3. instrument /ˈɪnstrəmənt/

4. criticism /ˈkrɪtɪsɪzəm/

5. familiar /fəˈmɪliər/

6. congress /ˈkɒŋɡres/

7. trend /trend/

8. experiment /ɪkˈsperɪmənt/

9. household /ˈhaʊshəʊld/

10. somewhat ˈsʌmwɒt/

11. convention /kənˈvenʃən/

12. outcome /ˈaʊtkʌm/

13. secure /sɪˈkjʊər/

14. obtain /əbˈteɪn/


















Posted By Thang Vuong 23:23