static成员函数不能调用non-static成员函数
生活随笔
收集整理的這篇文章主要介紹了
static成员函数不能调用non-static成员函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1?一般類靜態成員函數不能調用非靜態成員函數
2 static成員函數可以調用構造函數嗎?
答案是肯定的,由于static成員函數沒有this指針,所以一般static成員函數是不能訪問non-static成員的,包括成員函數和成員變量。
由于構造函數特殊性,它從無到有構造一個對象,因此調用它不需要一個instance,也就是不需要this指針來調用,所以在static 函數中能調用構造函數。
o 構造函數分成兩個階段:
? ? 1. 分配內存:這是從無到有階段,該階段結束,產生一個instance,也即this。
? ? 2. 初始化內存:真正調用構造函數的部分。此時已經是對該instance調用構造函數,因此,可以調用任何非靜態函數。
o 在靜態函數中,只要是通過instance.Func()或者pointer->Func()的方式就可以調用非靜態函數,因為顯式指定了this。
因此提倡在所有非靜態成員函數中顯示使用this來使用成員。
總結
以上是生活随笔為你收集整理的static成员函数不能调用non-static成员函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《作业控制系列》-“linux命令五分钟
- 下一篇: OpenStack(Kilo版本)镜像服