一、靜態成員函數
C++中的靜態成員函數是指在類內,由關鍵字static修飾的函數。它不屬於任何一個對象,而是屬於類本身,可以通過類名進行調用,也可以通過對象名進行調用。靜態成員函數只能訪問靜態成員變數和靜態成員函數,不能訪問普通成員變數和普通成員函數。靜態成員函數也不需要通過對象來調用,所以也不需要傳遞this指針。下面是一個靜態成員函數的例子:
class MyClass {
private:
static int m_num;
public:
static void setNum(int num) {
m_num = num;
}
};
在這個例子中,setNum是一個靜態成員函數,它可以通過MyClass::setNum()或obj.setNum()來進行調用。
二、this指針
this指針是C++中的一個關鍵字,它指向當前對象的指針。在成員函數中使用this可以訪問成員變數和成員函數,也可以用於返回對象本身,例如:
class MyClass {
private:
int m_num;
public:
MyClass(int num) {
this->m_num = num;
}
int getNum() {
return this->m_num;
}
MyClass& self() {
return *this;
}
};
在這個例子中,this->m_num表示訪問成員變數m_num,this->self()表示返回當前對象本身,它返回一個引用。
三、靜態成員函數與this指針
靜態成員函數沒有this指針,因為它不屬於任何一個對象。但是,靜態成員函數可以接受一個指向當前類的指針作為參數來訪問非靜態成員變數和成員函數。這個指針可以是當前類的一個對象的指針,也可以是當前類的類名。下面是一個例子:
class MyClass {
private:
int m_num;
public:
static void setNum(MyClass* obj, int num) {
obj->m_num = num;
}
int getNum() {
return this->m_num;
}
};
// 調用靜態成員函數setNum
MyClass obj(10);
MyClass::setNum(&obj, 20);
cout << obj.getNum(); // 輸出:20
在這個例子中,setNum是一個靜態成員函數,它接受一個指向MyClass類的指針作為參數,可以訪問非靜態成員變數m_num,然後改變其值。
四、總結
C++中的靜態成員函數不屬於任何一個對象,可以通過類名或對象名調用,不能訪問非靜態成員變數和成員函數。this指針指向當前對象,可以在成員函數中訪問成員變數和成員函數,也可以用於返回對象本身。靜態成員函數可以接受一個指向當前類的指針作為參數來訪問非靜態成員變數和成員函數。
原創文章,作者:DQVD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134187.html
微信掃一掃
支付寶掃一掃