类属性的存储和this指针
生活随笔
收集整理的這篇文章主要介紹了
类属性的存储和this指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <iostream>
using namespace std;
//C++是如何管理普通成員函數還有靜態成員函數以及靜態成員數據的
//C++類對象中的成員變量和成員函數是分開存儲的
//普通成員變量存儲在對象中 于 struct具有相同的內存布局和字節對齊方式
//靜態成員變量存儲于全局數據區中
//成員函數:存儲于代碼中
//C++中類的普通成員函數都隱士的包含了一個指向當前對象的this指針
//靜態成員函數、成員變量屬于類
//靜態成員函數與普通成員函數的成員函數的區別
//靜態成員函數不包含指向具體對象的指針
//普通成員函數包含指向具體成員函數的指針class c1{public:int i;;int j;int k;protected:private:};//12class c2{public:int i;int j;int k;static int m; //靜態數據 不算入類的大小 public:int getK() const {return k;} //類中的方法void setK(int val) {k = val;}protected:private:};//12class s1{public:int i;int j;int k;protected:private:}; //12class s2{public:int i;int j;int k;static int m(void){};static int x(void){};protected:private:};//12class Test{public:Test(int a,int b) //Test(Test * this,int a,intb){this->a = a; //當參數的名稱和類變量名稱相同的時候 可以使用this指針this->b =b;};void printT(){//類中可以使用this指針cout << this->a << endl;cout << this->b <<endl;}protected:private:int a;int b;};
int main()
{Test t1(1,2);t1.printT(); //this 指針 t1.printT(&t1);cout << sizeof(c1) << endl;cout << sizeof(c2) << endl;cout << sizeof(s1) << endl;cout << sizeof(s2) << endl;cout << "hello world!" << endl;system("pause");return 0;
}
類中有靜態變量的時候要在外部進行初始化 但是當靜態變量是私有屬性的時候只能進行初始化不能夠引用例如
class B {public:private:int a;int b;static int c;B::c = 10; //在外面進行初始化 ,但是不能夠進行引用靜態成員函數能夠調用靜態成員變量但是 不能夠調用非靜態成員函數或則變量
總結
以上是生活随笔為你收集整理的类属性的存储和this指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顶嵌
- 下一篇: 作者:司光亚(1967-),男,国防大学