1. 程式人生 > >c++友元類

c++友元類

友元類和java的反射機制作用差不多,打破類的封裝性。

#include "stdafx.h"
#include"iostream"
using namespace std;
class A {
private:
    friend class B; //B類是A的友元,在B中可以訪問A類的私有成員
    friend void modifyA(A *pA, int _a);//友元函式
    int x;
public:
    int getX() {
        return this->x;
    }
};

class B {
public:
    void set
(int a) { obj.x = a; } void print() { cout << obj.x << endl; } private: A obj; }; void modifyA(A *pA, int _a) { pA->x = _a; } int main() { B objB; objB.set(100);//友元類修改私有屬性 A objA; //建立一個A類物件,B類中也產生了A類物件 objB.print(); modifyA(&objA,12
);//友元函式修改A物件的私有屬性 cout << objA.getX()<< endl; system("pause"); return 0; }

相關推薦

c++宣告及其呼叫

友元類 友元除了前面講過的函式以外,友元還可以是類,即一個類可以作另一個類的友元。當一個類作為另一個類的友元時,這就意味著這個類的所有成員函式都是另一個類的友元函式。 使用友元類時注意: (1) 友元關係不能被繼承。 (2) 友元關係是單向的,不具有交換性。若類B

c++

友元類和java的反射機制作用差不多,打破類的封裝性。 #include "stdafx.h" #include"iostream" using namespace std; class A {

舉例說明C++的作用

如下所示例,class A與class B並沒有繼承關係,但是我們想讓A直接訪問B的私有變數,則可以將class B作為class A的友元。 #include <iostream> using namespace std; class A { class B {

C++使用之前置宣告(定義變數)

今天專案使用到了友元類,於是便先試著搞個簡單地使用例子 #include<iostream> class b; class a { private:int value; protected:void funprotected(); public:friend b

C++之函數和

res con 形參 display tle private 一點 second main 通過friend關鍵字,我們可以將不屬於當前類的一個函數在當前類中加以聲明,該函數便可以成為當前類的友元函數。#include<iostream>using namesp

C++中的函數和

pan string 拷貝構造函數 student 私有 oid 一個 each cor 友元函數可以修改類的私有屬性,寫在類的public/private/protected底下都可以。友元函數的函數體寫在類的外面時,寫法和普通函數一樣,不需要加friend關鍵字,但函數

C++開發系列-函數

return com 現在 pause 參數 TE ++ 操作 數據 友元函數 默認一個類的私有屬性只能在該類的內部可以直接訪問。友元函數申明在內的內部,實現在類的外部可以直接訪問類的私有屬性。 class A1 { public: A1() {

4、【C++】靜態成員變數/靜態成員函式/行內函數/函式//成員函式

一、靜態成員     我們可以使用 static 關鍵字來把類成員定義為靜態的。當我們宣告類的成員為靜態時,這意味著無論建立多少個類的物件,靜態成員都只有一個副本。     靜態成員在類的所有物件中是共享的。如果不存在其他的初始化語句,在建立第一個物件時,所有的靜態資料都會被初始化為

c++之函式和

c++友元函式一些見解 1、為什麼要引入友元函式:在實現類之間資料共享時,減少系統開銷,提高效率 具體來說:為了使其他類的成員函式直接訪問該類的私有變數 即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式 優點:能夠提高效率,表達簡單、清晰

C++中定義一個不能被繼承的(+模板)

自從C++11標準出來之後,就有了關鍵字final可以直接宣告一個類不能被繼承。那麼,在此之前如果想要一個類不能被繼承,可能還需要下一番功夫。 文章目錄 1.宣告建構函式為私有 2.子類宣告為基類的友元類 3.虛繼承——子類

C++----整個

//類做友元類: class Building { friend class goodGay; public: Building(); public: string m_sittingroom; //客廳 private: string m_bedroom; //臥室 }; Build

C++ 習題 輸出日期時間--

設計一個日期類和時間類,編寫display函式用於顯示日期和時間。要求:將Time類宣告為Date類的友元類,通過Time類中的display函式引用Date類物件的私有資料,輸出年、月、日和時、分、秒。

C++函式和用法詳解

在C++中,我們使用類對資料進行了隱藏和封裝,類的資料成員一般都定義為私有成員,成員函式一般都定義為公有的,以此提供類與外界的通訊介面。但是,有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該函式的友元函式。除了友元函式

(函式、成員函式) C++

        有些情況下,允許特定的非成員函式訪問一個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。         友元(frend)機制允許一個類將對其非公有成員的訪問權授予指定的函式或者類

C++的“”的一個使用場景

我遇到了“必須使用友元類”的一個場景。 我遇到了A中有B,B中有A的場景。 貌似“A的一個函式,作為B的友元函式”這個需求無法被實現。 #include <stdlib.h> class MyApiCls; class TcpClientCls//用於和Serv

C++語言--與巢狀-8.1----、巢狀

前言:C++系列到此結束。終於可以寫點簡單的Jni了。感謝自己的努力!!! 友元是一種允許非類成員函式訪問類的非公有成員的一種機制。可以把一個函式指定為類的友元,也可以把整個類指定為另一個類的友

一個使用誤區(C++)

這個問題,我困擾了好一會,決定記錄一下。 一、問題引出以及分析 問題程式碼簡化如下: class B; class A { friend class B; private: A() = default; bool operator()(int lh

c++函式和的理解

1,友元函式的定義和作用 我們已知道類具有封裝和資訊隱藏的特性。只有類的成員函式才能訪問類的私有成員,程式中的其他函式是無法訪問私有成員的。非成員函式可以訪問類中的公有成員,但是如果將資料成員都定義為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某

C++學習筆記(10)運算子過載,函式,

c++允許我們為運算子定義專門的函式,這被稱為運算子過載: 運算子可以簡化字串的操作,‘+’,以及使用關係運算符比較字串,[ ]運算子訪問向量中的元素; 例如: #include <iostream> #include <string> #include <

C++函式訪問的私有成員

#include <iostream>#include<cstring>using namespace std ;class Student{private:string  name;int age;int sore;public:Student(string name,int age