tek4

Con trỏ this trong C++

by - September. 26, 2021
Kiến thức
Học
<p>Con trỏ this trong C++ l&agrave; một kh&aacute;i niệm quan trọng trong lập tr&igrave;nh hướng đối tượng. Trong c&aacute;c b&agrave;i trước, ta đ&atilde; sử dụng con trỏ this cho c&aacute;c b&agrave;i to&aacute;n nhưng chưa đi s&acirc;u cụ thể về c&aacute;ch d&ugrave;ng v&agrave; vai tr&ograve; của con trỏ n&agrave;y. Do vậy, trong b&agrave;i viết n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu về con trỏ this trong C++ bằng v&iacute; dụ cơ bản. Nhưng trước hết, ta sẽ c&ugrave;ng nhắc lại về con trỏ.</p> <p>Con trỏ trong C++ được sử dụng để lưu trữ địa chỉ của một biến cụ thể. Ch&uacute;ng được sử dụng để tham chiếu đến biến c&oacute; địa chỉ m&agrave; n&oacute; đang lưu trữ. Một điểm quan trọng cần lưu &yacute; l&agrave; một con trỏ chỉ c&oacute; thể lưu trữ địa chỉ của một biến c&oacute; kiểu dữ liệu giống với kiểu dữ liệu của con trỏ. N&oacute;i c&aacute;ch kh&aacute;c, một con trỏ kiểu int chỉ c&oacute; thể giữ địa chỉ của một biến kiểu int.</p> <h1>Con trỏ this</h1> <p>Mọi đối tượng đều c&oacute; quyền truy cập v&agrave;o địa chỉ của ch&iacute;nh n&oacute; th&ocirc;ng qua một con trỏ quan trọng được gọi l&agrave; con trỏ this. Con trỏ this l&agrave; một tham số ngầm định cho tất cả c&aacute;c h&agrave;m th&agrave;nh vi&ecirc;n. Do đ&oacute;, b&ecirc;n trong một h&agrave;m th&agrave;nh vi&ecirc;n bất kỳ, con trỏ this c&oacute; thể được sử dụng để tham chiếu đến đối tượng thực hiện lời gọi h&agrave;m đ&oacute;.</p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; class sinh_vien{ private: int ID_sv; public: void nhap_thong_tin(int a){ this -&gt; ID_sv = a; } void in_thong_tin(){ cout &lt;&lt; ID_sv &lt;&lt; endl; } }; int main() { sinh_vien sv, sv2; sv.nhap_thong_tin(2); sv.in_thong_tin(); sv2.nhap_thong_tin(8); sv2.in_thong_tin(); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>2 8</code></pre> <p>Trong đoạn m&atilde; tr&ecirc;n, con trỏ this ch&iacute;nh l&agrave; con trỏ trỏ đến đối tượng sv của lớp sinh_vien khi h&agrave;m nhap_thong_tin() được gọi từ đối tượng sv. V&igrave; con trỏ this trỏ đến đối tượng sv, n&ecirc;n n&oacute; c&oacute; thể truy cập được v&agrave;o dữ liệu th&agrave;nh vi&ecirc;n của đối tượng sv.</p> <p>Đồng thời, khi đối tượng sv2 gọi tới h&agrave;m th&agrave;nh vi&ecirc;n nhap_thong_tin(), th&igrave; con trỏ this l&uacute;c n&agrave;y sẽ trỏ tới đối tượng sv2 v&agrave; n&oacute; truy cập v&agrave;o biến th&agrave;nh vi&ecirc;n của sv2. Như vậy, con trỏ this sẽ trỏ tới đối tượng thực hiện việc gọi h&agrave;m th&agrave;nh vi&ecirc;n, l&agrave; nơi m&agrave; con trỏ this l&agrave;m tham số ẩn, của một lớp nhất định.</p> <p>V&iacute; dụ 2:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; class phep_tinh{ private: int a; int b; int sum; public: phep_tinh(int c, int d){ this -&gt; a = c; this -&gt; b = d; } void phep_cong(){ this -&gt; sum = this -&gt; a + this -&gt; b; cout &lt;&lt; "Tong hai so la: " &lt;&lt; this -&gt; sum &lt;&lt; endl; } }; int main(){ phep_tinh vi_du(3,4); vi_du.phep_cong(); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Tong hai so la: 7</code></pre> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về con trỏ this trong C++. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i mới nhất tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p>