1. 程式人生 > >C++中this指標的詳解:

C++中this指標的詳解:

成員函式中this是指向正在呼叫該函式的物件,this指正在建立物件內部的成員。同一個類中的函式可以通過this相互呼叫,普通函式不能通過this呼叫建構函式,但建構函式可以通過this訪問普通函式!

.h檔案

ifndef TEACHER_H_
#define TEACHER_H_


class Teacher {
public:
int age;
int no;
Teacher();
~Teacher();
void teach1();
void teach2();
};


#endif /* TEACHER_H_ */

.cpp檔案

#include "Teacher.h"
#include <iostream>
using namespace std;


Teacher::Teacher() {


}


Teacher::~Teacher() {


}
//成員函式中this是:
//指向正在呼叫該函式的物件
void Teacher::teach1() {
cout<<this->age<<endl;
this->teach2();
}
void Teacher::teach2() {
cout<<this->age<<endl;

}

.main檔案

#include <iostream>
using namespace std;
#include "Teacher.h"


void f1() {
Teacher t1;//age no   //建立的t1物件,this指向t1中的成員
t1.age = 100;
t1.teach1();//100


Teacher t2;     //建立的是t2物件,this指向t2中的成員
t2.age = 200;
t2.teach1();//200
}
void f2() {
Teacher t1;//age=100
t1.age = 100;
Teacher *p1 = &t1;    //p1指向的是t1物件,所以呼叫的是teach1()是t1中的!
p1->teach1();//100
}


void f3() {
Teacher t1;//age=100
t1.age = 100;
Teacher &r = t1; r指向的t1,呼叫的還是t1中的teacher1()
r.teach1();//100
}
int main() {
f3();
return 0;
}

相關推薦

《隨筆十七》—— C++的 “ 指標

目錄 指標的概念 指標所指向的型別 指標的值 指標本身所佔據的記憶體區 指標的算術運算          運算子&和* 指標表示式 陣列和指標的關係 指標和結構型別的關係 指標和函式的關係

C++this指標

成員函式中this是指向正在呼叫該函式的物件,this指正在建立物件內部的成員。同一個類中的函式可以通過this相互呼叫,普通函式不能通過this呼叫建構函式,但建構函式可以通過this訪問普通函式!.h檔案ifndef TEACHER_H_#define TEACHER_H

C++ this指標 C++this指標的用法

C++中this指標的用法詳解   轉自:http://blog.chinaunix.net/uid-21411227-id-1826942.html 1. this指標的用處:   一個物件的this指標並不是物件本身的一部分,不會影響sizeof(物件)的結果

c++this指標的用法

為什麼引入this指標?     最簡單的應用場景就是:當我們在類中定義了一個變數,同時在類成員函式中定義了同一變數時,也就是說變數名重複時,但是我們想使用類中定義的變數,這個時候我們該怎麼辦呢?這個時候就是this指標大顯身手的時候了。為此我們引入this指標

C++this指標的作用以及用法

為什麼引用this指標? 當我們在類中定義了一個變數,同時又在類成員函式中定義了同一個變數時,也就是變數名重複時,但是我們要想使用類中的定義的變數,此時就需要this指標了。 1.this指標的作用 指標存在於類的成員函式中,指向被呼叫函式類例項的地址。  一個物件的thi

C++ this 指標的用法

1. this指標的用處: 一個物件的this指標並不是物件本身的一部分,不會影響sizeof(物件)的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的地址作為一個隱含引數傳遞給函式。也就是說,即使你沒有寫上

c++this指標的理解(轉載苦澀的茶 ——產品開發 C++類this指標的理解)

先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。用這個型別可以來宣告一個變數,比如int x, myclass my等等。這樣就像變數x具有int型別一樣,變數my具有myclass型別。理解了這個,就好解釋this了,m

C++ this指標

                 C++this指標操作 在這裡總結一下this 指標的相關知識點。   首先,我們都知道類的成員函式可以訪問類的資料(限定符只是限定於類外的一些操作,類內的一切對於成員函式來說都是透明的),那麼成員函式如何知道哪個物件的資料成員要被操作呢,

C++類的this指標

這篇文章主要講解隱式this指標的概念,以及如何使用,包含const 先直接給出一個C++Primer裡的類,你可能還不能完全看懂,但是不著急,我們一點點解釋 class Sales_data { std::string isbn() const { return bookNo; } Sale

C/C++extern關鍵字

編譯器 fin 生成 接口 bcd 只需要 c++環境 結束 編程 轉自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html 1 基本解釋:extern可以置於變量或者函數前,以標示變量或者

C/C++作用域(轉)

防止 局部作用域 gist 文件中 方式 為什麽不使用 形式參數 lan archive 作用域規則告訴我們一個變量的有效範圍,它在哪兒創建,在哪兒銷毀(也就是說超出了作用域)。變量的有效作用域從它的定義點開始,到和定義變量之前最鄰近的開括號配對的第一個閉括號。也就是說,作

C#const用法

htm 鏈接 服務器 span img body 用法詳解 -s 設計 本文實例講述了C#中const用法。分享給大家供大家參考。具體用法分析如下: const是一個c語言的關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性,另外,

C#protected用法

base 而是 報錯 public 我們 此刻 訪問 .html 定義 轉自(https://www.cnblogs.com/wangyt223/archive/2012/08/08/2627801.html) 在c#的可訪問性級別中,public和private算是最

c/c++static的

extern info system pan 特點 靜態成員 額外 定義 全局 C 語言的 static 關鍵字有三種(具體來說是兩種)用途: 1. 靜態局部變量:用於函數體內部修飾變量,這種變量的生存期長於該函數。 int foo(){ st

C#ToString()格式

padding design otn href 有效 詳解 pattern console AS 以下內容均摘自博客園,僅供資料查詢。原文連接http://www.cnblogs.com/xdotnet/archive/2009/01/17/tostring_format.

C++的繼承

C++ 繼承 [TOC] 繼承基本知識 定義:  繼承是面向對復用的重要手段。通過繼承定義一個類,繼承是類型之間的關系建模,共享公有的東西,實現各自本質不同的東西。 繼承關系:  三種繼承關系下基類成員的在派生類的訪問關系變化(圖) 舉個栗子(公有繼承) ```c+

C++列舉enum

轉載部落格地址:https://blog.csdn.net/bruce_0712/article/details/54984371     眾所周知,C/C++語言可以使用#define和const建立符號常量,而使用enum工具不僅能夠建立符號常量,還能定義新

C語言之指標

指標 &:操作符產生它的運算元的地址。 如: int a, *b (*b:指向整形變數的指標)     ....     b = &a; (&操作符取變數a的地址,並把它賦值給指標變數) *操作符

C/C++volatile關鍵字

asm 運行 多線程並發 這樣的 修改 由於 設定 其他 硬件 1. 為什麽用volatile? C/C++ 中的 volatile 關鍵字和 const 對應,用來修飾變量,通常用於建立語言級別的 memory barrier。這是 BS 在 "The C++ P

C++的string

標準庫型別string表示可變長的字元序列,為了在程式中使用string型別,我們必須包含標頭檔案: #include <string>  宣告一個字串 宣告一個字串有很多種方式,具體如下: 1 string s;//呼叫預設建構函式,s為一個空