友元函數允許跨類訪問私有或受保護成員,語法為:class classname {protected: // 私有或受保護成員};friend 聲明友元函數;。要調用友元函數,使用點運算符和類實例:obj.value = 10; printvalue(obj);。實戰案例中,友元函數用于比較兩個字符串長度,訪問了私有成員 length()。
C++ 友元函數詳解:深入理解和調用方式
友元函數是 C++ 中一種特殊類型的函數,它可以訪問另一個類的私有和受保護成員。這在需要跨類訪問數據或實現特殊功能時非常有用。
友元函數的語法
友元函數的語法如下:
class ClassName { protected: // 私有或受保護成員 }; friend 聲明友元函數;
登錄后復制
例如:
class MyClass { protected: int value; }; friend void printValue(MyClass&); // 聲明友元函數
登錄后復制
調用友元函數
要調用友元函數,可以使用點運算符(.
)和類實例:
MyClass obj; obj.value = 10; // 訪問私有成員 printValue(obj); // 調用友元函數
登錄后復制
實戰案例
以下是一個使用友元函數的實戰案例:
// 友元函數用于比較兩個字符串的長度 bool compareStringLength(const string& s1, const string& s2) { return s1.length() > s2.length(); } // 測試友元函數 int main() { string str1 = "Hello"; string str2 = "World"; // 使用友元函數比較字符串長度 if (compareStringLength(str1, str2)) { cout << "str1 is longer than str2" << endl; } else { cout << "str2 is longer than str1" << endl; } return 0; }
登錄后復制
在這個例子中,compareStringLength
函數是一個友元函數,可以訪問 string
類的私有成員 length()
。