🌈個人主頁:羽晨同學?
💫個人格言:“成為自己未來的主人~”??
?我們在之前的文章有提到友元,我們先來看下面的這段包含了友元的代碼:
??#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Time
{friend class Date;
public:Time(int hour = 0, int minute = 0, int second = 0):_hour(hour),_minute(minute),_second(second){}
private:int _hour;int _minute;int _second;};
class Date
{
public:Date(int year = 1900,int month = 1, int day = 1):_year(year),_month(month),_day(day){_t._hour++;}private:int _year;int _month;int _day;Time _t;
};
int main()
{return 0;
}
在這段代碼當中,我們可以看到一個典型的運用了友元函數的代碼,在這段代碼當中,
Date是Time的友元,但是在這個其中涉及到了一個問題,那就是Time可以訪問Date,但是Date卻不可以訪問Time,
你看,當Date訪問Time的私有時,編譯器就會進行報錯。
接下來,讓我們看下面的一端代碼:
#include<iostream>
using namespace std;
class A
{
private:static int k;int h;
public:void func(){}
private:class B{public:void foo(const A& a){cout << k << endl;cout << a.h << endl;}private://int _b;};
};
int main()
{cout << sizeof(A) << endl;A a1;return 0;
}
?
?在上面的這個代碼當中,所呈現出來的,就是我們所要講到的內部類,內部類是一個獨立的類,它不屬于外部類,更不能通過外部類的對象去訪問內部類的成員,外部類對于內部類沒有任何優越的訪問權限,
注意:內部類就是外部類的友元類
sizeof(外部類)=外部類,和內部類沒有任何關系。
#include<iostream>
using namespace std;
class A
{
private:static int k;int h;
public:void func(){}
private:class B{public:void foo(const A& a){cout << k << endl;cout << a.h << endl;}private:int _b;};
};
int main()
{cout << sizeof(A) << endl;A a1;return 0;
}
?
?
?