Note the position of the prototype for the ordinary function version o การแปล - Note the position of the prototype for the ordinary function version o ไทย วิธีการพูด

Note the position of the prototype

Note the position of the prototype for the ordinary function version of operator > () . It needs to follow the class definition, because it refers to a CBox object in the parameter list. If you place it before the class definition, the example will not compile. There is a way to place it at the beginning of the program file following the #include statement: use an incomplete class declaration . This would precede the prototype and would look like this:

class CBox; // Incomplete class declaration
bool operator > (const double & value, const CBox & aBox); // Function prototype

The incomplete class declaration identifies CBox to the compiler as a class and is sufficient to allow the compiler to process the prototype for the function properly, since the compiler now knows that CBox is a user - defined type to be specified later. This mechanism is also essential in circumstances such as those where you have two classes, each of which has a pointer to an object of the other class as a member. They will each require the other to be declared first. It is only possible to resolve such an impasse through the use of an incomplete class declaration.
The output from the example is:
Constructor called.
Constructor called.
mediumBox is bigger than smallBox
mediumBox capacity is more than 50
smallBox capacity is less than 10
Destructor called.
Destructor called.
After the constructor messages due to the declarations of the objects smallBox and mediumBox , you have the output lines from the three if statements, each of which is working as you would expect. The first of these calls the operator function that is a class member and works with two CBox objects. The second calls the member function that has a parameter of type double . The expression in the third if statement calls the operator function that you have implemented as an ordinary function. As it happens, you could have made both the operator functions that are class members ordinary functions, because they only need access to the member function Volume() , which is public
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
โปรดสังเกตตำแหน่งของต้นแบบรุ่นปกติฟังก์ชันของตัวดำเนินการ > () มันต้องไปตามคำนิยามของคลาส เนื่องจากมันอ้างอิงถึงวัตถุ CBox ในรายการพารามิเตอร์ ถ้าคุณทำมันก่อนกำหนดคลาส จะไม่มีการคอมไพล์ตัวอย่าง มีวิธีที่จะวางที่จุดเริ่มต้นของแฟ้มโปรแกรมดังต่อไปนี้งบ #include: ใช้การประกาศคลาสไม่สมบูรณ์ นี้จะนำหน้าต้นแบบ และจะมีลักษณะดังนี้: ชั้น CBox ประกาศคลาสไม่สมบูรณ์ ดำเนินการ bool > (เตียงเดี่ยวค่า const และค่า ค่า const CBox และ aBox); ต้นแบบฟังก์ชัน การประกาศคลาสสมบูรณ์ระบุ CBox คอมไพเลอร์เป็นคลาส และเพียงพอที่จะทำให้คอมไพเลอร์เพื่อกระบวนการต้นแบบในการทำงานได้อย่างถูกต้อง เนื่องจากคอมไพเลอร์รู้จักว่า CBox ผู้ - กำหนดชนิดที่ระบุในภายหลัง กลไกนี้เป็นสิ่งจำเป็นในสถานการณ์เช่นนั้นมี 2 ชั้น ซึ่งมีตัวชี้ไปวัตถุของคลาสเป็นสมาชิก ละต้องอื่น ๆ การประกาศครั้งแรก จึงได้แก้ไขจนการดังกล่าวโดยใช้การประกาศคลาสไม่สมบูรณ์ จากตัวอย่างคือ: ตัวสร้างที่เรียกว่าตัวสร้างที่เรียกว่าmediumBox จะใหญ่กว่า smallBoxmediumBox กำลังการผลิตมากกว่า 50smallBox กำลังการผลิตน้อยกว่า 10Destructor ที่เรียกว่าDestructor ที่เรียกว่า หลังจากที่ตัวสร้างข้อความเนื่องจากประกาศของวัตถุ smallBox และ mediumBox คุณมีบรรทัดผลผลิตจากสามถ้างบ ซึ่งทำงานตามที่คุณคาดหวัง ต้องเรียกฟังก์ชันตัวดำเนินการที่เป็นสมาชิกระดับ และทำงานกับวัตถุ CBox สอง ที่สองเรียกฟังก์ชันสมาชิกที่มีพารามิเตอร์ชนิดคู่ นิพจน์ในถ้างบดำเนินการฟังก์ชันที่คุณใช้เป็นฟังก์ชั่นธรรมดา เป็นเรื่องที่เกิดขึ้น คุณสามารถทำทั้งสองตัวดำเนินการฟังก์ชันที่มีคลาสสมาชิกสามัญฟังก์ชัน เนื่องจากพวกเขาต้องการเข้าถึงฟังก์ชันสมาชิก Volume() ซึ่งเป็นที่สาธารณะ
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
หมายเหตุตำแหน่งของต้นแบบสำหรับรุ่นธรรมดาฟังก์ชั่นของผู้ประกอบการ> () จะต้องมีการปฏิบัติตามข้อกำหนดของชั้นเพราะมันหมายถึงวัตถุ CBox ในรายการพารามิเตอร์ ถ้าคุณวางไว้ก่อนที่จะกำหนดระดับตัวอย่างจะไม่รวบรวม ไม่มีทางที่จะวางไว้ที่จุดเริ่มต้นของแฟ้มโปรแกรมดังต่อไปนี้คำสั่ง #include คือใช้การประกาศคลาสที่ไม่สมบูรณ์ นี้จะนำต้นแบบและจะมีลักษณะเช่นนี้ระดับ CBox; // ประกาศคลาสที่ไม่สมบูรณ์ประกอบการบูล> (const คู่และค่า const CBox และ ABox); ฟังก์ชั่น // ต้นแบบการประกาศคลาสที่ไม่สมบูรณ์จะระบุ CBox คอมไพเลอร์เป็นชั้นและจะเพียงพอที่จะช่วยให้คอมไพเลอร์ในการประมวลผลต้นแบบสำหรับการทำงานอย่างถูกต้องตั้งแต่คอมไพเลอร์ในขณะนี้รู้ว่า CBox เป็นผู้ใช้ - กำหนดประเภทที่จะระบุในภายหลัง กลไกนี้ยังเป็นสิ่งจำเป็นในสถานการณ์เช่นนั้นที่คุณมีสองชั้นแต่ละที่มีตัวชี้ไปยังวัตถุของชั้นอื่น ๆ ที่เป็นสมาชิก พวกเขาแต่ละคนจะต้องใช้อื่น ๆ ที่จะได้รับการประกาศเป็นครั้งแรก . มันจะเป็นไปได้ที่จะแก้ปัญหาดังกล่าวทางตันผ่านการใช้การประกาศคลาสที่ไม่สมบูรณ์เอาท์พุทจากตัวอย่างคือ: . สร้างที่เรียกว่าสร้างที่เรียกว่า. mediumBox มีขนาดใหญ่กว่า smallBox mediumBox ความจุมากกว่า 50 smallBox ความจุน้อยกว่า 10 เตาเผาที่เรียกว่า . เตาเผาที่เรียกว่า. หลังจากข้อความสร้างเนื่องจากการประกาศของวัตถุ smallBox และ mediumBox คุณมีสายออกจากสามถ้างบแต่ละที่มีการทำงานที่คุณคาดหวัง ครั้งแรกของสายเหล่านี้ฟังก์ชั่นผู้ประกอบการที่เป็นสมาชิกระดับและทำงานร่วมกับวัตถุสอง CBox ครั้งที่สองเรียกฟังก์ชันสมาชิกที่มีพารามิเตอร์ประเภทคู่ การแสดงออกในไตรมาสที่สามถ้าคำสั่งเรียกฟังก์ชันประกอบการที่คุณได้นำมาใช้เป็นฟังก์ชั่นสามัญ ในขณะที่มันเกิดขึ้นคุณจะได้ทำหน้าที่ทั้งผู้ประกอบการที่เป็นสมาชิกระดับฟังก์ชั่นธรรมดาเพราะพวกเขาจะต้องเข้าถึงฟังก์ชันสมาชิกเล่ม () ซึ่งเป็นที่สาธารณะ













การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ทราบตำแหน่งของต้นแบบเพื่อการทำงานของผู้ประกอบการ ( รุ่นธรรมดา ) มันต้องเป็นไปตามระดับความหมาย เพราะมันหมายถึง การ cbox วัตถุในรายการพารามิเตอร์ ถ้าคุณวางไว้ก่อนเรียนความหมาย ตัวอย่างจะไม่รวบรวม . มีวิธีการวางที่จุดเริ่มต้นของแฟ้มโปรแกรมต่อไปนี้#รวมถึงงบ : ใช้ประกาศชั้นเรียนที่ไม่สมบูรณ์นี้จะนำหน้าต้นแบบและจะมีลักษณะเช่นนี้ : cbox เรียน

; / / ไม่สมบูรณ์ประกาศ
ห้องบูลผู้ประกอบการ > ( ค่า& Const คู่ Const cbox & abox ) ; / / ฟังก์ชันต้นแบบ

ประกาศคลาสไม่สมบูรณ์ ระบุ cbox ให้คอมไพเลอร์เป็นชั้นเรียนและเพียงพอเพื่อให้คอมไพเลอร์เพื่อกระบวนการ ต้นแบบฟังก์ชันอย่างถูกต้องเนื่องจากผู้แปลตอนนี้รู้ว่า cbox เป็นผู้ใช้ - กำหนดประเภทที่จะระบุในภายหลัง กลไกนี้ยังเป็นสิ่งจำเป็นในสถานการณ์เช่นที่คุณมี 2 ชั้นแต่ละที่มีตัวชี้ไปยังวัตถุของคลาสอื่น ๆ ในฐานะที่เป็นสมาชิก พวกเขาจะ require แต่ละอื่น ๆที่จะได้รับการประกาศครั้งแรกมันเป็นเพียงที่เป็นไปได้เพื่อแก้ไขปัญหาดังกล่าวผ่านการใช้งานของการประกาศคลาสที่ไม่สมบูรณ์
ผลจากตัวอย่างคือ :

คอนสตรัคผู้สร้างเรียกว่า โทร .
mediumbox ใหญ่กว่า smallbox
mediumbox ความจุมากกว่า 50
smallbox ความจุน้อยกว่า 10

เดสทรัคเตอร์เดสทรัคเตอร์โทรมา โทรมา
หลังจากสร้างข้อความจากการประกาศของ smallbox mediumbox วัตถุและคุณต้องออกสายสาม ถ้างบแต่ละที่ได้ทำงานตามที่คุณคาดหวัง เรียกใช้ฟังก์ชันที่เป็นระดับสมาชิกและทำงานร่วมกับสอง cbox วัตถุแรกของเหล่านี้ 2 เรียกสมาชิกฟังก์ชันที่มีพารามิเตอร์ของประเภทคู่
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: