全域性函式類內和類外實現

2021-10-06 05:37:31 字數 858 閱讀 2255

全域性函式類內實現:直接在類內宣告友元即可

全域性函式類外實現:需要讓編譯器提前知道全域性函式的存在

推薦使用全域性函式類內實現,編譯器可以直接識別

#include

#include

using

namespace std;

//宣告person類

template<

classt1,

class

t2>

class

person

;//全域性函式類外實現

//不用加作用域

//提前讓編譯器知道全域性函式

template<

classt1,

class

t2>

void

printperson2

(personp)

template<

classt1,

class

t2>

class

person

//全域性函式 類外實現

//加空模板引數列表 表明這是乙個函式模板而非普通函式

friend void printperson2<

>

(personp)

;public

:person

(t1 name,

t2 age)

private

:t1 m_name;

t2 m_age;};

void

test01()

void

test02()

intmain()

類內陣列宣告,「類外」指定大小

類內陣列宣告,類外 指定大小 using namespace std class age const int age ages int main 首先說明 1,c 可以在類的宣告的時候指定值 但是是有條件的 static const 修飾。保證是class級別的,並且不可修改。2,ages的宣告是在...

私有成員變數的訪問(類內與類外)

1 class ctest 1011 ctest ctest int i value i 1215 16 ctest ctest const ctest rhs value rhs.value 1720 21 ctest ctest operator const ctest rhs 2229 30v...

類內靜態函式和全域性靜態函式的相同點和不同點

1 全域性靜態函式只在本編譯單元有效。2 類靜態函式,對比普通成員函式,沒有this指標,不能訪問非static成員。3 要說二者相同點,都是c 名字控制的手段 全域性靜態函式被侷限在乙個編譯單元,通俗的將就是在乙個cpp檔案中定義的全域性靜態函式在另乙個cpp檔案中不能被呼叫。例程如下 inclu...