C++友元類使用之前置宣告(定義變數)
今天專案使用到了友元類,於是便先試著搞個簡單地使用例子
#include<iostream>
class b;
class a
{
private:
int value;
protected:
void funprotected();
public:
friend b;
a(int x);
//b bclass;
void funpublic();
};
a::a(int x)
{
value = x;
}
class b
{
public:
void fun(a&);
};
void b::fun(a& aclass)
{
std::cout << aclass.value << std::endl;
}
int main()
{
a aclass(5);
b bclass;
bclass.fun(aclass);
return 0;
}
在程式編譯時順利通過,但是去掉其中註釋後就會提示未定義的型別b,我查了一下,在實際定義類體之前,不能用該型別去定義變數,只能做宣告,但是,我想這應該不算是定義變數吧,因為並沒有分配記憶體,好吧,我已經被迫認為註釋掉的那一行就是定義變量了。
相關推薦
C++友元類使用之前置宣告(定義變數)
今天專案使用到了友元類,於是便先試著搞個簡單地使用例子 #include<iostream> class b; class a { private:int value; protected:void funprotected(); public:friend b
C++類的前置宣告(二)
看完《Effective C++》條款31有感。。 假設有一個Date類 Date.h [cpp] view plain copy class Date { private: int year, month, day; }; 如果有個Task類的
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++模板類內友元(友元函式,友元類)宣告的三種情況
根據《C++ Primer》第三版16.4節的敘述,C++類模板友元分為以下幾種情況1.非模板友元類或友元函式。 書上給了一個例子:class Foo{ void bar();};template <class T>class QueueItem{
C++之友元函數和友元類
res con 形參 display tle private 一點 second main 通過friend關鍵字,我們可以將不屬於當前類的一個函數在當前類中加以聲明,該函數便可以成為當前類的友元函數。#include<iostream>using namesp
c++之友元函式和友元類
c++友元函式一些見解 1、為什麼要引入友元函式:在實現類之間資料共享時,減少系統開銷,提高效率 具體來說:為了使其他類的成員函式直接訪問該類的私有變數 即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式 優點:能夠提高效率,表達簡單、清晰
一個友元類使用誤區(C++)
這個問題,我困擾了好一會,決定記錄一下。 一、問題引出以及分析 問題程式碼簡化如下: class B; class A { friend class B; private: A() = default; bool operator()(int lh
C++學習筆記(10)運算子過載,友元函式,友元類
c++允許我們為運算子定義專門的函式,這被稱為運算子過載: 運算子可以簡化字串的操作,‘+’,以及使用關係運算符比較字串,[ ]運算子訪問向量中的元素; 例如: #include <iostream> #include <string> #include <
C++友元函式和友元類(C++ friend)詳解
私有成員只能在類的成員函式內部訪問,如果想在別處訪問物件的私有成員,只能通過類提供的介面(成員函式)間接地進行。這固然能夠帶來資料
[C++]【類】友元的三種宣告及注意事項
class A{ friend void fri_fun(A); private: int a=9; }; void fri_fun(A aa){ cout<<aa.a<<endl; } 在程
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++11標準出來之後,就有了關鍵字final可以直接宣告一個類不能被繼承。那麼,在此之前如果想要一個類不能被繼承,可能還需要下一番功夫。 文章目錄 1.宣告建構函式為私有 2.子類宣告為基類的友元類 3.虛繼承——子類
C++----整個類做友元類
//類做友元類: class Building { friend class goodGay; public: Building(); public: string m_sittingroom; //客廳 private: string m_bedroom; //臥室 }; Build
C++裡類的前置宣告初探
我們先了解下C++下函式的情況,然後再類比到C++類 一 C++下函式宣告和定義 我們在用C++寫程式碼時(假設原始檔只有一個main.cpp),經常會按照以下步驟寫: 先對自定義的函式進行宣告 在main函式裡呼叫第1步裡宣告好的函式 編寫函式的實際程式碼,
C++ 習題 輸出日期時間--友元類
設計一個日期類和時間類,編寫display函式用於顯示日期和時間。要求:將Time類宣告為Date類的友元類,通過Time類中的display函式引用Date類物件的私有資料,輸出年、月、日和時、分、秒。
c++成員運算子過載和友元運算子過載的比較(以++,--運算子為例)
1、對雙目運算子而言,成員運算子過載函式引數列表中含有一個引數,而友元運算子過載函式引數列表含有兩個引數;對單目運算子而言,成員運算子過載函式引數列表中沒有引數,而友元運算子過載函式引數列表含有一個引數。 2、雙目運算子一班可以被過載為友元運算子和成員函式運算