新手學C/C++:C++的類靜態成員函式可以訪問類中的私有成員嗎?為什麼?
類的所有成員函式都可以訪問本類的私有成員,但是靜態成員函式沒有this指標,因此通過 該類的物件作為函式引數,可以顯示訪問該類的私有成員。
測試程式如下:
#include <stdio.h>
class Demo
{
private:
int i;
public:
int getI();
static void StaticSetI(Demo& d, int v);
};
int Demo::getI()
{
return i;
}
void Demo::StaticSetI(Demo& d, int v)
{
d.i = v;
}
int main()
{
Demo d;
//d.i = 11;
Demo::StaticSetI(d, 10);
printf("d.i = %d\n", d.getI());
return 0;
}
相關推薦
C++ 靜態成員函式 訪問 類成員變數 & 函式指標、函式指標陣列、函式指標陣列指標的使用 & 回撥函式的使用
靜態成員函式可以通過引用類物件訪問類成員變數;test.h#ifndef TEST_H #define TEST_H class Test { public: Test(); Tes
0基礎學C語言:C語言視頻教程免費分享!
軟件 適合 密碼 計算機程序 計算機編程 學c語言 應用軟件 技術分享 朋友 C語言是一種通用的、過程式的編程語言,廣泛用於系統與應用軟件的開發。作為計算機編程的基礎語言,長期以來它一直是編程愛好者追捧而又比較難學的語言。C語言是一種計算機程序設計語言,它既具有高級語言的特
C++學習:一個通用ini配置檔案操作類
在windows平臺下,簡單的程式可以通過ini檔案實現簡單的配置,簡單適用。在win32 sdk還提供了相應的api來讀取修改ini檔案。ini配置檔案格式為: [section] key=string ... 讀取與修改string的api為ReadPrivatePro
c++中對類中私有成員中的靜態變數初始化
1.static成員的所有者是類本身和物件,但是多有物件擁有一樣的靜態成員。從而在定義物件時不能通過建構函式對其進行初始化。 2.靜態成員不能在類定義裡邊初始化,只能在class body外初始化。 3.靜態成員仍然遵循public,private,protected訪問準
objective-c 類和物件中靜態資料成員和靜態成員函式(類方法)詳解
作為初學者,相信大家都對objective-c的靜態資料成員和靜態成員函式都挺糾結的,我現在和大家分享下我對這個知識點的理解,請大家多多指點.... 如果大家學過C++,那麼都應該知道和了解靜態資料成
[C#]如何訪問及調用類中私有成員及方法
exceptio 分享 flags 網址 網頁 控制 .text 代碼 我們 原文:[C#]如何訪問及調用類中私有成員及方法 本文為原創文章、源代碼為原創代碼,如轉載/復制,請在網頁/代碼處明顯位置標明原文名稱、作者及網址,謝謝! 開發工具:VS2017 語言:C
c++基礎:C++的一些基本概念
//參考書:visual c++面向物件程式設計教程(王育堅) 一:C++的成員屬性有3種 1.private屬性(預設屬性)的成員只能由本類成員函式訪問或呼叫; 2.protect屬性的成員只能由本類成員函式或派生類成員函式訪問或呼叫; 3.public屬效能被本類函式或其他類函式通過物件訪問或呼
C++----類的成員變數和成員函式在類的儲存方式
類的成員變數和成員函式在類的儲存方式為分開儲存。 即只有非靜態變數儲存在類中,其餘的所有成員均不在類中。 實驗如下: exp1: class Person1 { }; void test01() { cout << "size of (空類Person)
Microsoft C# 概覽:C# 和 JAVA
C# 和 JAVA 是兩個不同的面嚮物件語言,兩者有類似,同時更有不同。C# 和 JAVA 都是從祖父類”Object”派生的。在 C#裡的全部類都是從System.Object 類衍生的,在JAVA裡
Microsoft C# 概覽:C# 控制檯應用程式
下面是一個簡單的C#控制檯應用程式。這個程式從main()函式開始。可以新建一個控制檯應用工程,並且拷貝和貼上下面的C#原始碼。 using System; using System.Collecti
破解/優化C++程式碼:C++程式碼的編譯過程
這篇文章會講解 Visual C++ 編譯器的資料流——首先會以一段C++源程式開始,以對應的二進位制程式結束。這篇文章很簡單——一切才剛剛開始。 首先我們來看看從命令列開始,編譯一個單一檔案的程式 APP.cpp 時會發生什麼(如果你想從Vistual Studio 來啟動編譯,下圖還
破解C++程式碼:C++程式碼的編譯過程
這篇文章會講解 Visual C++ 編譯器的資料流——首先會以一段C++源程式開始,以對應的二進位制程式結束。這篇文章很簡單——一切才剛剛開始。 首先我們來看看從命令列開始,編譯一個單一檔案的程式 APP.cpp 時會發生什麼(如果你想從Vistual Studio 來啟動
C++回顧之static成員、static成員函式及類物件大小計算
C中的static使用比較簡單,都不陌生了,C++中static關鍵字在類中的使用需要注意一些細節。static在類中修飾的是資料成員以及成員函式,分別稱之為靜態資料成員及靜態成員函式。 先來看看static靜態資料成員的目的及使用:
C++類模板與函式模板 & 類模板繼承
函式模板與類模板其實就是Java裡面的泛型程式設計,只作為抽象的模板,使用時需要指定具體的型別才能例項 下面就看類模板最典型的案列就能明白了: #include <iostream> #include <initializer_list> #inc
《C語言:常用的字串處理函式總結》
第一次筆記:關於C語言積累感謝大家閱覽,記得看完點贊啦!常用的字串處理函式 C語言編譯系統中提供了很多有關字串處理的庫函式,這些庫函式為字串處理提供了方便,下面總結下幾種有關字串處理的函式。一、輸出字串函式puts:格式:puts(字元陣列名) ;功能:puts函式用
C++基礎:C++標準庫之棧(stack)和佇列(queue)
在C++標準庫(STL)中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。 1、棧(stack)說明及舉例: 使用棧,要先包含標頭檔案 : #include<stack> 定義棧,以如下形式實現: stack<Type> s; 其中Ty
C/C++學習:求最大值函式
問題 兩週實訓,第四題:求最大值函式。 問題描述:從鍵盤輸入兩個double型別資料,a,b,通過定義並呼叫函式max_ab實現求a與b的最大值輸出。 解題 完整程式碼: /* Module Name:求最大值函式 Module
C#開發:c#基本資料型別及其預設值
參考網站:https://blog.csdn.net/simonezhlx/article/details/4099904//值型別C# 型別 .NET Framework 型別bool System.Boolean 4By
C# 學習: 讀取檔案流,儲存到位元組中
最近在做檔案資料讀取的測試,C#的檔案讀取,儲存到位元組中,之前對這塊不熟悉,Mark: Stream expectedSteam = new FileStream(path, FileMode.O
C++靜態成員函式訪問非靜態成員變數的方法
靜態成員函式不能訪問非靜態成員,這是因為靜態函式屬於類而不是屬於整個物件,靜態函式中的 member可能都沒有分配記憶體。靜態成員函式沒有隱含的this自變數。所以,它就無法訪問自己類的非靜態成員。但