當前位置:首頁 » 密碼管理 » c訪問私有成員變數

c訪問私有成員變數

發布時間: 2022-09-22 02:28:51

『壹』 C++中訪問私有成員的問題

什麼是私有成員?是他私有的變數,假如說你定義個人身體的類,私有的比如是
內臟,骨頭,你是怎麼強制訪問?把人殺了屍解嗎?既然定義了私有成員,就是被隱蔽不能被其他類對象訪問的。所以做不到訪問私有成員。

『貳』 c++的私有靜態數組成員怎樣訪問

根據C++的規范,類內的私有成員變數是不允許在類外進行訪問的。
通常情況下,類的成員變數建議使用protected和private進行修飾。避免外部介面直接操作成員變數。
如果外部對象想要對該變數進行讀取和修改,應當顯式的聲明public函數介面,例如void setValue(int value);和int getValue();在函數中對私有成員進行訪問。

『叄』 在C++中訪問類的私有成員變數的方法有哪些

(1)通過公共函數為私有成員賦值

#include<iostream>
usingnamespacestd;

classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidprint(void)
{
cout<<"x="<<x<<' '<<"y="<<y<<endl;
}
};

intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
p1.print();
return0;
}

(2)利用指針訪問私有數據成員

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidgetXY(int*px,int*py)
{
*px=x;//提取x,y值
*py=y;
}
};
intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
inta,b;
p1.getXY(&a,&b);//將a=x,b=y
cout<<a<<' '<<b<<endl;
return0;
}

(3)利用函數訪問私有數據成員

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
intgetX(void)
{
returnx;//返回x值
}
intgetY(void)
{
returny;//返回y值
}
};
intmain()
{
Testp1;
p1.setX(1);
p1.setY(9);
inta,b;
a=p1.getX();
b=p1.getY();
cout<<a<<' '<<b<<endl;
return0;
}

(4)利用引用訪問私有數據成員

#include<iostream>
usingnamespacestd;
classTest
{
private:
intx,y;
public:
voidsetX(inta)
{
x=a;
}
voidsetY(intb)
{
y=b;
}
voidgetXY(int&px,int&py)//引用
{
px=x;//提取x,y值
py=y;
}
};
intmain()
{
Testp1,p2;
p1.setX(1);
p1.setY(9);
inta,b;
p1.getXY(a,b);//將a=x,b=y
cout<<a<<' '<<b<<endl;
return0;
}

『肆』 在C++中訪問類的私有成員變數的方法有哪些

c++類中成員函數默認的許可權是私有的(就是自己才能用),public注釋掉後,output()方法變成私有成員。類外的其他函數都不能調用。只有該類內部的方法可以調用。
public沒被注釋掉的時候,output()方法是公有的,類外的函數也可以調用

『伍』 c++類中靜態成員函數怎麼訪問類私有變數

如果私有變數是靜態的,可以直接訪問,或通過類名::變數名訪問;
如果私有變數是實例成員,要先創建一個類的對象,再通過對象名.變數名訪問,或先new一個對象,將new的返回值賦給一個指針,通過指針名->變數名訪問或通過(*指針名).變數名訪問。

『陸』 c++ 類的私有成員變數可以被訪問嗎

C++類體聲明的私有成員僅供類體內成員訪問,其它地方不可訪問。

『柒』 如何訪問類中的private成員變數

總所周知,類中的private屬性的成員變數在類外是無法訪問的,今天我們探討的就是如何在類外訪問private屬性的成員變數。

我們先來看一個簡單的例子:

class STU
{
public:
STU()
{
x = 5;
y = 10;
}
private:
int x;
int y;
};

int main()
{
STU t;
int*p = (int*)&t + 1;
return 0;
}

通過上面的代碼我們可以知道,方法是把類對象的地址強制轉化為int*類型,因為類對象里存儲的只是成員變數,所以通過對指針的操作可以訪問到private類型的成員變數。

接下來還有一個例子:

class STU
{
public:
STU()
{
c = 'f';
y = 10;
}
private:
char c;
int y;
};

int main()
{
STU t;
int*p = (int*)((char*)&t + 4);
cout << *p << endl;
return 0;
}

這段代碼中最重要的就是int*p = (int*)((char*)&t + 4);
因為第一個數據是char類型的,所以要把對象的地址轉化為char*型,對象中存在兩種類型的數據,需要考慮內存對齊,所以當要訪問下一個int型變數的時候,指針需要加4,而不是加1。最後要取到int型的變數,還是要把地址強轉為int *。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:331
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:371
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:606
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:27
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:100
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:935
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:730
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:798
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:506
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:367