国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象,C/C++,c++,1024程序員節(jié)
??類(lèi)和對(duì)象(下篇)
??【本節(jié)目標(biāo)】
??1. 再談構(gòu)造函數(shù)
??2. Static成員
??3. 友元
??4. 內(nèi)部類(lèi)
??5.匿名對(duì)象
??6.拷貝對(duì)象時(shí)的一些編譯器優(yōu)化
??7. 再次理解類(lèi)和對(duì)象

??1.再談構(gòu)造函數(shù)

??1.1 構(gòu)造函數(shù)體賦值
在創(chuàng)建對(duì)象時(shí),編譯器通過(guò)調(diào)用構(gòu)造函數(shù),給對(duì)象中各個(gè)成員變量一個(gè)合適的初始值

class Date
{
public:
Date(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};

??雖然上述構(gòu)造函數(shù)調(diào)用之后,對(duì)象中已經(jīng)有了一個(gè)初始值,但是不能將其稱(chēng)為對(duì)對(duì)象中成員變量的初始化,構(gòu)造函數(shù)體中的語(yǔ)句只能將其稱(chēng)為賦初值,而不能稱(chēng)作初始化。因?yàn)槌跏蓟荒艹跏蓟淮?,而?gòu)造函數(shù)體內(nèi)可以多次賦值
??1.2 初始化列表
初始化列表:以一個(gè)冒號(hào)開(kāi)始,接著是一個(gè)以逗號(hào)分隔的數(shù)據(jù)成員列表,每個(gè)"成員變量"后面跟一個(gè)放在括號(hào)中的初始值或表達(dá)式

class Date
{
public:
Date(int year, int month, int day)
: _year(year)
, _month(month)
, _day(day)
{}
private:
int _year;
int _month;
int _day;
};

【注意】
??1. 每個(gè)成員變量在初始化列表中只能出現(xiàn)一次(初始化只能初始化一次)
??2. 類(lèi)中包含以下成員,必須放在初始化列表位置進(jìn)行初始化:
??引用成員變量 const成員變量 自定義類(lèi)型成員(且該類(lèi)沒(méi)有默認(rèn)構(gòu)造函數(shù)時(shí))

class A
{
public:
A(int a)
:_a(a)
{}
private:
int _a;
};
class B
{
public:
B(int a, int ref)
:_aobj(a)
,_ref(ref)
,_n(10)
{}
private:
A _aobj; // 沒(méi)有默認(rèn)構(gòu)造函數(shù)
int& _ref; // 引用
const int _n; // const
};

??3. 盡量使用初始化列表初始化,因?yàn)椴还苣闶欠袷褂贸跏蓟斜?,?duì)于自定義類(lèi)型成員變量,一定會(huì)先使用初始化列表初始化

class Time
{
public:
Time(int hour = 0)
:_hour(hour)
{
cout << "Time()" << endl;
}
private:
int _hour;
};
class Date
{
public:
Date(int day)
{}
private:
int _day;
Time _t;
};
int main()
{
Date d(1);
}

??4. 成員變量在類(lèi)中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后次序無(wú)關(guān)

class A
{
public:
A(int a)
:_a1(a)
,_a2(_a1)
{}
void Print() {
cout<<_a1<<" "<<_a2<<endl;
}
private:
int _a2;
int _a1;
};
int main() {
A aa(1);
aa.Print();
} A
. 輸出1 1
B.程序崩潰
C.編譯不通過(guò)
D.輸出1 隨機(jī)值

【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象,C/C++,c++,1024程序員節(jié)
在上篇文章已經(jīng)解釋過(guò)了
??1.3 explicit關(guān)鍵字
??構(gòu)造函數(shù)不僅可以構(gòu)造與初始化對(duì)象,對(duì)于單個(gè)參數(shù)或者除第一個(gè)參數(shù)無(wú)默認(rèn)值其余均有默認(rèn)值的構(gòu)造函數(shù),還具有類(lèi)型轉(zhuǎn)換的作用

public:
上述代碼可讀性不是很好,用explicit修飾構(gòu)造函數(shù),將會(huì)禁止構(gòu)造函數(shù)的隱式轉(zhuǎn)換
// 1. 單參構(gòu)造函數(shù),沒(méi)有使用explicit修飾,具有類(lèi)型轉(zhuǎn)換作用
// explicit修飾構(gòu)造函數(shù),禁止類(lèi)型轉(zhuǎn)換---explicit去掉之后,代碼可以通過(guò)編譯
explicit Date(int year)
:_year(year)
{}
/*
// 2. 雖然有多個(gè)參數(shù),但是創(chuàng)建對(duì)象時(shí)后兩個(gè)參數(shù)可以不傳遞,沒(méi)有使用explicit修飾,具
有類(lèi)型轉(zhuǎn)換作用
// explicit修飾構(gòu)造函數(shù),禁止類(lèi)型轉(zhuǎn)換
explicit Date(int year, int month = 1, int day = 1)
: _year(year)
, _month(month)
, _day(day)
{}
*/
Date& operator=(const Date& d)
{
if (this != &d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
return *this;
}
private:
int _year;
int _month;
int _day;
};
void Test()
{
Date d1(2022);
// 用一個(gè)整形變量給日期類(lèi)型對(duì)象賦值
// 實(shí)際編譯器背后會(huì)用2023構(gòu)造一個(gè)無(wú)名對(duì)象,最后用無(wú)名對(duì)象給d1對(duì)象進(jìn)行賦值
d1 = 2023;
// 將1屏蔽掉,2放開(kāi)時(shí)則編譯失敗,因?yàn)閑xplicit修飾構(gòu)造函數(shù),禁止了單參構(gòu)造函數(shù)類(lèi)型轉(zhuǎn)
換的作用
}

上述代碼可讀性不是很好,用explicit修飾構(gòu)造函數(shù),將會(huì)禁止構(gòu)造函數(shù)的隱式轉(zhuǎn)換

??2.static成員

2.1 概念
聲明為static的類(lèi)成員稱(chēng)為類(lèi)的靜態(tài)成員,用static修飾的成員變量,稱(chēng)之為靜態(tài)成員變量;用static修飾的成員函數(shù),稱(chēng)之為靜態(tài)成員函數(shù)。靜態(tài)成員變量一定要在類(lèi)外進(jìn)行初始化

//class A
//{
//public:
//	A() { ++count; }
//	A(const A& t) { ++count; }
//	~A() {
//		cout << "~A()" << endl;
//	}
//
//	// 靜態(tài)成員函數(shù),特點(diǎn):沒(méi)有this指針
//	static int GetCount()
//	{
//		return count;
//	}
//
//private:
//	// 聲明
//	static int count;
//	int _a = 0;
//};
//
 定義
//int A::count = 0;
//
//A func()
//{
//	A aa;
//	return aa;
//}
//
//int main()
//{
//	//A::count++;
//
//	//cout << sizeof(A) << endl;
//
//	//A aa;
//	func();
//	func();
//	func();
//
//
//	//A::count++;
//
//	// 公有
//	// 屬于整個(gè)類(lèi),屬于這個(gè)類(lèi)所有對(duì)象
//	// 受訪問(wèn)限定符限制
//	//cout << A::count << endl;
//	//cout << aa.count << endl;
//
//	// A aa;有名對(duì)象
//	//A aa;  //為了調(diào)用而創(chuàng)建的,所以要-1
//	//cout << aa.GetCount()-1 << endl;
//
//
//	// A() 這種寫(xiě)法叫做匿名對(duì)象,生命周期只在這一行
//	//cout << A().GetCount() - 1 << endl;
//
//	cout << A::GetCount() << endl;
//	//cout << A().GetCount() << endl;
//
//	// 總結(jié)一下:靜態(tài)成員函數(shù)和靜態(tài)成員變量,本質(zhì)受限制的全局變量和全局函數(shù)
//	// 專(zhuān)屬這個(gè)類(lèi),受類(lèi)域和訪問(wèn)限定符的限制
//

??2.2 特性
??1. 靜態(tài)成員為所有類(lèi)對(duì)象所共享,不屬于某個(gè)具體的對(duì)象,存放在靜態(tài)區(qū)
??2. 靜態(tài)成員變量必須在類(lèi)外定義,定義時(shí)不添加static關(guān)鍵字,類(lèi)中只是聲明
??3. 類(lèi)靜態(tài)成員即可用 類(lèi)名::靜態(tài)成員 或者 對(duì)象.靜態(tài)成員 來(lái)訪問(wèn)
??4. 靜態(tài)成員函數(shù)沒(méi)有隱藏的this指針,不能訪問(wèn)任何非靜態(tài)成員
??5. 靜態(tài)成員也是類(lèi)的成員,受public、protected、private 訪問(wèn)限定符的限制
下面我們來(lái)寫(xiě)一道??途W(wǎng)的題目 運(yùn)用到了static的知識(shí)
題目鏈接
【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象,C/C++,c++,1024程序員節(jié)

??3. 友元

友元提供了一種突破封裝的方式,有時(shí)提供了便利。但是友元會(huì)增加耦合度,破壞了封裝,所以友元不宜多用
友元分為:友元函數(shù)和友元類(lèi)
??3.1 友元函數(shù)
問(wèn)題:現(xiàn)在嘗試去重載operator<<,然后發(fā)現(xiàn)沒(méi)辦法將operator<<重載成成員函數(shù)。因?yàn)閏out的輸出流對(duì)象和隱含的this指針在搶占第一個(gè)參數(shù)的位置。this指針默認(rèn)是第一個(gè)參數(shù)也就是左操作數(shù)了。但是實(shí)際使用中cout需要是第一個(gè)形參對(duì)象,才能正常使用。所以要將operator<<重載成全局函數(shù)。但又會(huì)導(dǎo)致類(lèi)外沒(méi)辦法訪問(wèn)成員,此時(shí)就需要友元來(lái)解決。operator>>同理

class Date
{
public:
Date(int year, int month, int day)
: _year(year)
, _month(month)
, _day(day)
{}
// d1 << cout; -> d1.operator<<(&d1, cout); 不符合常規(guī)調(diào)用
// 因?yàn)槌蓡T函數(shù)第一個(gè)參數(shù)一定是隱藏的this,所以d1必須放在<<的左側(cè)
ostream& operator<<(ostream& _cout)
{
_cout << _year << "-" << _month << "-" << _day << endl;
return _cout;
}
private:
int _year;
int _month;
int _day;
};

??友元函數(shù)可以直接訪問(wèn)類(lèi)的私有成員,它是定義在類(lèi)外部的普通函數(shù),不屬于任何類(lèi),但需要在類(lèi)的內(nèi)部聲明,聲明時(shí)需要加friend關(guān)鍵字

class Date
{
friend ostream& operator<<(ostream& _cout, const Date& d);
friend istream& operator>>(istream& _cin, Date& d);
public:
Date(int year = 1900, int month = 1, int day = 1)
: _year(year)
, _month(month)
, _day(day)
{}
private:
int _year;
int _month;
int _day;
};
ostream& operator<<(ostream& _cout, const Date& d)
{
_cout << d._year << "-" << d._month << "-" << d._day;
return _cout;
}
istream& operator>>(istream& _cin, Date& d)
{
_cin >> d._year;
_cin >> d._month;
_cin >> d._day;
return _cin;
}
int main()
{
Date d;
cin >> d;
cout << d << endl;
return 0;
}

??友元函數(shù)可訪問(wèn)類(lèi)的私有和保護(hù)成員,但不是類(lèi)的成員函數(shù)
??友元函數(shù)不能用const修飾
??友元函數(shù)可以在類(lèi)定義的任何地方聲明,不受類(lèi)訪問(wèn)限定符限制
??一個(gè)函數(shù)可以是多個(gè)類(lèi)的友元函數(shù)
??友元函數(shù)的調(diào)用與普通函數(shù)的調(diào)用原理相同
??3.2 友元類(lèi)
友元類(lèi)的所有成員函數(shù)都可以是另一個(gè)類(lèi)的友元函數(shù),都可以訪問(wèn)另一個(gè)類(lèi)中的非公有成員
友元關(guān)系是單向的,不具有交換性
比如上述Time類(lèi)和Date類(lèi),在Time類(lèi)中聲明Date類(lèi)為其友元類(lèi),那么可以在Date類(lèi)中直接訪問(wèn)Time類(lèi)的私有成員變量,但想在Time類(lèi)中訪問(wèn)Date類(lèi)中私有的成員變量則不行 友元關(guān)系不能傳遞
如果C是B的友元, B是A的友元,則不能說(shuō)明C時(shí)A的友元
友元關(guān)系不能繼承,在繼承位置再給大家詳細(xì)介紹

class Time
{
friend class Date; // 聲明日期類(lèi)為時(shí)間類(lèi)的友元類(lèi),則在日期類(lèi)中就直接訪問(wèn)Time類(lèi)
中的私有成員變量
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)
{}
void SetTimeOfDate(int hour, int minute, int second)
{
// 直接訪問(wèn)時(shí)間類(lèi)私有的成員變量
_t._hour = hour;
_t._minute = minute;
_t._second = second;
}
private:
int _year;
int _month;
int _day;
Time _t;
};
//class A
//{
//private:
//	int h;
//public:
//	// A和B關(guān)系
//	// B就是一個(gè)普通類(lèi),只是受A的類(lèi)域和訪問(wèn)限定符限制,本質(zhì)相當(dāng)于被封裝了一下
//
//	// B天生就是A的友元
//	class B 
//	{
//	public:
//		void func()
//		{
//			A aa;
//			// B天生就是A的友元
//			aa.h++;
//		}
//	private:
//		int _b;
//	};
//};
//
//int main()
//{
//	cout << sizeof(A) << endl;
//
//	A aa;
//	A::B bb;
//
//	return 0;
//}
//class A
//{
//public:
//	//explicit A(int a) 
//	A(int a)
//		:_a(a)
//	{}
//
//	/*A(int* p)
//	{}*/
//
//	int _a = 0;
//};
//
//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//		: _year(year)
//		, _month(month)
//		, _day(day)
//	{}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	//A aa1(1);
//	//A aa2(2);
//
//	// 內(nèi)置類(lèi)型對(duì)象 隱式轉(zhuǎn)換成自定義類(lèi)型對(duì)象
//	// 能支持這個(gè)轉(zhuǎn)換,是有A的int單參數(shù)構(gòu)造函數(shù)(支持傳一個(gè)參數(shù)多參數(shù)帶缺省也可以)支持
//	// 不想讓隱式類(lèi)型轉(zhuǎn)換發(fā)生,構(gòu)造函數(shù)加explicit
//	//A aa3 = 3;
//	//const A& ra = 3;
//
//	//int* p = NULL;
//	//A aa4 = p;
//
//	// 內(nèi)置類(lèi)型  整形和浮點(diǎn) 隱式互相轉(zhuǎn)
//	int i = 0;
//	double d = i;
//	const double& r = i;
//
//	Date d1(2023, 11, 2);
//	Date d2 = (2023, 11, 3); // 等價(jià)于 Date d2 = 3;
//	Date d3 = 2023;
//
//	// C++11
//	Date d4 = { 2023, 11, 2 };
//	const Date& d5 = { 2023, 11, 2 };
//
//	list<A> lt;
//	//void push_back(const A& aa);
//	A aa1(1);
//	lt.push_back(aa1);
//	lt.push_back(A(2));
//	lt.push_back(3);
//
//	list<Date> lt1;
//	Date d6(2023, 11, 2);
//	lt1.push_back(d6);
//
//	lt1.push_back(Date(2023, 11, 2));
//	lt1.push_back({ 2023, 11, 2 });
//
//	return 0;
//}

??4. 內(nèi)部類(lèi)

概念:如果一個(gè)類(lèi)定義在另一個(gè)類(lèi)的內(nèi)部,這個(gè)內(nèi)部類(lèi)就叫做內(nèi)部類(lèi)。內(nèi)部類(lèi)是一個(gè)獨(dú)立的類(lèi),它不屬于外部類(lèi),更不能通過(guò)外部類(lèi)的對(duì)象去訪問(wèn)內(nèi)部類(lèi)的成員。外部類(lèi)對(duì)內(nèi)部類(lèi)沒(méi)有任何優(yōu)越的訪問(wèn)權(quán)限
注意:內(nèi)部類(lèi)就是外部類(lèi)的友元類(lèi),參見(jiàn)友元類(lèi)的定義,內(nèi)部類(lèi)可以通過(guò)外部類(lèi)的對(duì)象參數(shù)來(lái)訪問(wèn)外部類(lèi)中的所有成員。但是外部類(lèi)不是內(nèi)部類(lèi)的友元
特性:
??1. 內(nèi)部類(lèi)可以定義在外部類(lèi)的public、protected、private都是可以的
?? 2. 注意內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)中的static成員,不需要外部類(lèi)的對(duì)象/類(lèi)名
?? 3. sizeof(外部類(lèi))=外部類(lèi),和內(nèi)部類(lèi)沒(méi)有任何關(guān)系

class A
{
private:
static int k;
int h;
public:
class B // B天生就是A的友元
{
public:
void foo(const A& a)
{
cout << k << endl;//OK
cout << a.h << endl;//OK
}
};
};
int A::k = 1;
int main()
{
A::B b;
b.foo(A());
return 0;
}
class A
{
public:
A(int a = 0)
:_a(a)
{
cout << "A(int a)" << endl;

??5.匿名對(duì)象

匿名對(duì)象我們?cè)谟言瘮?shù)和友元類(lèi)已經(jīng)提到過(guò)了一些 具體是在vector和list那里將有名和匿名還是正常的拷貝構(gòu)造和構(gòu)造的差異性做了對(duì)比

class A
{
public:
A(int a = 0)
:_a(a)
{
cout << "A(int a)" << endl;
}
~A()
{
cout << "~A()" << endl;
}
private:
int _a;
};
class Solution {
public:
int Sum_Solution(int n) {
//...
return n;
}
};
int main()
{
A aa1;
// 不能這么定義對(duì)象,因?yàn)榫幾g器無(wú)法識(shí)別下面是一個(gè)函數(shù)聲明,還是對(duì)象定義
//A aa1();
// 但是我們可以這么定義匿名對(duì)象,匿名對(duì)象的特點(diǎn)不用取名字,
// 但是他的生命周期只有這一行,我們可以看到下一行他就會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù)
A();
A aa2(2);
// 匿名對(duì)象在這樣場(chǎng)景下就很好用,當(dāng)然還有一些其他使用場(chǎng)景,這個(gè)我們以后遇到了再說(shuō)
Solution().Sum_Solution(10);
return 0;
}

??6.拷貝對(duì)象時(shí)的一些編譯器優(yōu)化

// 擴(kuò)展:一些構(gòu)造時(shí)的優(yōu)化,不同的編譯器可能會(huì)不同(了解一下)
class A
{
public:
	A(int a = 0)
		:_a(a)
	{
		cout << "A(int a)" << endl;
	}

	A(const A& aa)
		:_a(aa._a)
	{
		cout << "A(const A& aa)" << endl;
	}

	A& operator=(const A& aa)
	{
		cout << "A& operator=(const A& aa)" << endl;

		if (this != &aa)
		{
			_a = aa._a;
		}

		return *this;
	}

	~A()
	{
		cout << "~A()" << endl;
	}
private:
	int _a;
};

//int main()
//{
//	// 1、先用1構(gòu)造一個(gè)臨時(shí)對(duì)象 2、再用臨時(shí)對(duì)象拷貝構(gòu)造aa1
//	// 3、同一個(gè)表達(dá)式中,連續(xù)構(gòu)造+構(gòu)造/構(gòu)造+拷貝構(gòu)造/拷貝構(gòu)造+拷貝構(gòu)造會(huì)合二為一
//	// a、構(gòu)造+構(gòu)造->構(gòu)造
//	// b、構(gòu)造+拷貝構(gòu)造->構(gòu)造
//	// c、拷貝構(gòu)造+拷貝構(gòu)造->拷貝構(gòu)造
//	A aa1 = 1;  
//	const A& aa2 = 2;
//
//	return 0;
//}

//void func(A aa1)
//{
//
//}
//
//int main()
//{
//	// 構(gòu)造
//	A aa(1);
//	// 拷貝構(gòu)造
//	func(aa);
//
//	//構(gòu)造+拷貝構(gòu)造->構(gòu)造 
//	func(A(2));
//
//	//構(gòu)造+拷貝構(gòu)造->構(gòu)造 
//	func(3);
//
//	return 0;
//}

A func()
{
	A aa;
	return aa;
}

int main()
{
	// 拷貝構(gòu)造+拷貝構(gòu)造->拷貝構(gòu)造
	//A aa1 = func();

	A aa2;
	aa2 = func();

	return 0;
}

//int main()
//{
//	A aa1(1);   // 構(gòu)造
//
//	// 一個(gè)已經(jīng)存在的對(duì)象拷貝初始化另一個(gè)要?jiǎng)?chuàng)建的對(duì)象,就是拷貝構(gòu)造
//	// 他們兩是等價(jià)的
//	A aa2(aa1);  // 拷貝構(gòu)造
//	A aa3 = aa1; // 拷貝構(gòu)造 or 賦值拷貝
//
//	// 兩個(gè)已經(jīng)存在的對(duì)象拷貝,賦值拷貝
//	aa2 = aa3;
//
//
//	return 0;
//}

??7. 再次理解類(lèi)和對(duì)象

現(xiàn)實(shí)生活中的實(shí)體計(jì)算機(jī)并不認(rèn)識(shí),計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制格式的數(shù)據(jù)。如果想要讓計(jì)算機(jī)認(rèn)識(shí)實(shí)生活中的實(shí)體,用戶必須通過(guò)某種面向?qū)ο蟮恼Z(yǔ)言,對(duì)實(shí)體進(jìn)行描述,然后通過(guò)編寫(xiě)程序,創(chuàng)建對(duì)象后計(jì)算機(jī)才可以認(rèn)識(shí)。比如想要讓計(jì)算機(jī)認(rèn)識(shí)洗衣機(jī),就需要:
??1. 用戶先要對(duì)現(xiàn)實(shí)中洗衣機(jī)實(shí)體進(jìn)行抽象—即在人為思想層面對(duì)洗衣機(jī)進(jìn)行認(rèn)識(shí),洗衣機(jī)有什么屬性,有那些功能,即對(duì)洗衣機(jī)進(jìn)行抽象認(rèn)知的一個(gè)過(guò)程
??2. 經(jīng)過(guò)1之后,在人的頭腦中已經(jīng)對(duì)洗衣機(jī)有了一個(gè)清醒的認(rèn)識(shí),只不過(guò)此時(shí)計(jì)算機(jī)還不清楚,想要讓計(jì)算機(jī)識(shí)別人想象中的洗衣機(jī),就需要人通過(guò)某種面相對(duì)象的語(yǔ)言(比如:C++、Java、Python等)將洗衣機(jī)用類(lèi)來(lái)進(jìn)行描述,并輸入到計(jì)算機(jī)中
??3. 經(jīng)過(guò)2之后,在計(jì)算機(jī)中就有了一個(gè)洗衣機(jī)類(lèi),但是洗衣機(jī)類(lèi)只是站在計(jì)算機(jī)的角度對(duì)洗衣機(jī)對(duì)象進(jìn)行描述的,通過(guò)洗衣機(jī)類(lèi),可以實(shí)例化出一個(gè)個(gè)具體的洗衣機(jī)對(duì)象,此時(shí)計(jì)算機(jī)才能洗衣機(jī)是什么東西
??4. 用戶就可以借助計(jì)算機(jī)中洗衣機(jī)對(duì)象,來(lái)模擬現(xiàn)實(shí)中的洗衣機(jī)實(shí)體了
在類(lèi)和對(duì)象階段,大家一定要體會(huì)到,類(lèi)是對(duì)某一類(lèi)實(shí)體(對(duì)象)來(lái)進(jìn)行描述的,描述該對(duì)象具有那些屬性,那些方法,描述完成后就形成了一種新的自定義類(lèi)型,才用該自定義類(lèi)型就可以實(shí)例化具體的對(duì)象
【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象,C/C++,c++,1024程序員節(jié)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-810904.html

到了這里,關(guān)于【C++】:類(lèi)和對(duì)象(下):explicit || 再談構(gòu)造函數(shù) || static成員 || 友元 || 內(nèi)部類(lèi) || 匿名對(duì)象 || 拷貝對(duì)象時(shí)的編譯器優(yōu)化問(wèn)題 || 再次理解類(lèi)和對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包