(七)
本地變量 Local variable
成員變量
在一個函數裡面定義了一個重名的本地變量,是以在這個成員函數裡本地變量優先。
成員變量的作用域::是類,在類的成員函數裡面使用,類聲明裡的成員變量也屬于聲明,而不是定義。
而本地變量隻能在定義那個的成員函數裡面
(如果你在成員函數裡面使用某個成員變量, 不要把成員變量作為形參,直接使用即可)
如果你在頭檔案裡面聲明了一個全局變量,比如 extern int g; 你再在某個源檔案 比如 hello.cpp 裡面去 include 了它,并且要使用全局變量 g 的話,你必須在 hello.cpp 裡面再定義 g,也就是 int g;
而對于類的非靜态成員變量,我們不需要搞成這樣: int A::i; 而且這也是錯誤的。 那麼成員變量 i 我們怎麼定義呢? 我們在執行個體化對象的時候就定義了成員變量了!
是以,成員變量不在類裡面,而是在類的不同實體對象裡面,當你有了實體對象,你才有了實體的 成員變量。
(八)
parameters(參數),local variables(本地變量)
放在堆棧裡。
fileds (字段)
聲明變量,(不知在記憶體哪裡)
成員變量,成員函數
==類不擁有i,類是虛的,隻有對象(eg:a)擁有i==;
==函數是屬于類的==;(是以成員函數f()在使用成員變量i時,其實是使用this->i,i與對象挂鈎了,但在成員函數中直接用了i)
調用a.f();
調用的是A的函數。

#include<iostream>
using namespace std;
class myClass
{
public:
int i=20;
void f();
};
void myClass::f()
{
i++;
cout<<i<<endl;
cout<<"this ->"<<this<<endl;
}
int main()
{
myClass a,aa;
a.i=20;
cout<<a.i<<endl;
a.f();
cout<<a.i<<endl;
cout<<aa.i<<endl;
aa.f();
cout<<"&a = "<<&a<<endl;
cout<<"&aa = "<<&aa<<endl;
}
輸出結果:20 21 this->0xffff(某位址)
21 20 this->0xfffe(另一個位址)
&a = 0xffff
&aa = 0xfffe
;
證明i是對象擁有的,a.i變為21後,aa.i的初始值仍為20;
以及this所指向的位址與變量有關;
筆記來源:
網易雲課堂
https://study.163.com/note/noteIndex.htm?id=271005&type=0#/noteIndex?resType=0&resId=381171&sortType=0