คำถามติดแท็ก class-design

หลักเกณฑ์ทั่วไปเกี่ยวกับวิธีการออกแบบคลาสด้วยวิธีปฏิบัติที่เป็นที่รู้จักมากที่สุดในอุตสาหกรรม

16
เมื่อใช้หลักการความรับผิดชอบเดี่ยวสิ่งใดที่ถือว่าเป็น“ ความรับผิดชอบ?”
ดูเหมือนชัดเจนว่า "หลักการความรับผิดชอบเดี่ยว" ไม่ได้หมายความว่า "ทำเพียงสิ่งเดียวเท่านั้น" นั่นคือวิธีการที่ใช้ public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } บ็อบมาร์ตินกล่าวว่า "คลาสควรมีเหตุผลเดียวเท่านั้นที่จะเปลี่ยนแปลง" แต่นั่นเป็นเรื่องยากที่จะทำให้คุณคิดมากหากคุณเป็นโปรแกรมเมอร์ใหม่สำหรับ SOLID ฉันเขียนคำตอบสำหรับคำถามอื่นที่ฉันแนะนำว่าความรับผิดชอบเป็นเหมือนชื่องานและเต้นไปรอบ ๆ หัวเรื่องโดยใช้อุปมาอุปไมยในร้านอาหารเพื่ออธิบายประเด็นของฉัน แต่นั่นก็ไม่ได้เป็นชุดของหลักการที่บางคนสามารถใช้เพื่อกำหนดความรับผิดชอบของชั้นเรียนของพวกเขา แล้วคุณจะทำอย่างไร คุณจะกำหนดความรับผิดชอบอย่างไรในแต่ละชั้นเรียนและคุณกำหนดความรับผิดชอบอย่างไรในบริบทของ SRP

9
มีเหตุผล "ของจริง" ที่ไม่ชอบการสืบทอดหลายครั้งหรือไม่
ฉันชอบความคิดที่ว่าจะมีหลายมรดกที่สนับสนุนในภาษา ส่วนใหญ่มักจะลืมมันโดยเจตนาและ "การแทนที่" ที่ควรจะเป็นอินเตอร์เฟส การเชื่อมต่อก็ไม่ได้ครอบคลุมการสืบทอดหลาย ๆ อันเหมือนกันทั้งหมดและข้อ จำกัด นี้บางครั้งอาจนำไปสู่รหัสสำเร็จรูปมากขึ้น เหตุผลพื้นฐานเดียวที่ฉันเคยได้ยินเรื่องนี้คือปัญหาเพชรกับชั้นเรียนพื้นฐาน ฉันไม่สามารถยอมรับได้ สำหรับฉันมันหลุดออกมามากมายเช่น "เอาละมันเป็นไปได้ที่จะพลาดมันดังนั้นมันจึงเป็นความคิดที่ไม่ดีโดยอัตโนมัติ" คุณสามารถทำอะไรผิดพลาดในภาษาการเขียนโปรแกรมและฉันหมายถึงอะไร ฉันไม่สามารถทำสิ่งนี้ได้อย่างจริงจังอย่างน้อยก็ไม่ใช่โดยไม่ต้องอธิบายให้ละเอียด เพียงตระหนักถึงปัญหานี้ 90% ของการต่อสู้ นอกจากนี้ฉันคิดว่าฉันได้ยินบางสิ่งบางอย่างเมื่อหลายปีก่อนเกี่ยวกับวัตถุประสงค์ทั่วไปที่เกี่ยวข้องกับอัลกอริทึม "ซองจดหมาย" หรืออะไรทำนองนั้น (เสียงกริ่งดังขึ้นทุกคนหรือไม่) ปัญหาเกี่ยวกับเพชรปัญหาของแท้ที่ฉันอาจนึกได้คือถ้าคุณพยายามใช้ห้องสมุดบุคคลที่สามและไม่เห็นว่าสองคลาสที่ไม่เกี่ยวข้องกันดูเหมือนว่าในห้องสมุดนั้นมีคลาสพื้นฐานร่วมกัน แต่นอกเหนือไปจาก เอกสารคุณสมบัติของภาษาที่ง่ายอาจทำให้คุณต้องการประกาศความตั้งใจในการสร้างข้าวหลามตัดก่อนที่จะทำการรวบรวมเพชรให้คุณ ด้วยคุณสมบัติเช่นนี้การสร้างเพชรใด ๆ ก็อาจเป็นการจงใจไม่ประมาทหรือเพราะไม่มีใครรู้ถึงความผิดพลาดนี้ เพื่อให้ทุกคนพูดว่า ... มีเหตุผลจริงหรือที่คนส่วนใหญ่เกลียดชังมรดกหลายอย่างหรือว่ามันเป็นเพียงแค่กลุ่มฮิสทีเรียที่ก่อให้เกิดอันตรายมากกว่าดี? มีบางอย่างที่ฉันไม่เห็นใช่ไหม ขอขอบคุณ. ตัวอย่าง รถขยาย WheeledVehicle, KIASpectra ขยายรถยนต์และอิเล็กทรอนิกส์ KIASpectra มีวิทยุ เหตุใด KIASpectra จึงไม่มี Electronic เพราะมันเป็นอิเล็กทรอนิกส์ การสืบทอดกับการจัดองค์ประกอบควรเป็นความสัมพันธ์แบบ is-a กับความสัมพันธ์แบบ a-a เพราะมันเป็นอิเล็กทรอนิกส์ …

13
วิธีการเตือนโปรแกรมเมอร์อื่น ๆ ของการใช้งานในชั้นเรียน
ฉันกำลังเขียนชั้นเรียนที่ "ต้องใช้ในทางที่เฉพาะเจาะจง" (ฉันเดาว่าชั้นเรียนทั้งหมดต้อง ... ) ตัวอย่างเช่นผมสร้างfooManagerชั้นซึ่งต้องมีInitialize(string,string)การเรียกร้องให้พูดให้ และเพื่อผลักดันตัวอย่างต่อไปอีกเล็กน้อยชั้นเรียนจะไร้ประโยชน์หากเราไม่ฟังการThisHappenedกระทำของมัน ประเด็นของฉันคือชั้นเรียนที่ฉันเขียนต้องใช้วิธีการโทร แต่มันจะรวบรวมได้ดีถ้าคุณไม่เรียกวิธีการเหล่านั้นและจะจบลงด้วย FooManager ใหม่ที่ว่างเปล่า ในบางจุดมันอาจจะไม่ทำงานหรืออาจผิดพลาดขึ้นอยู่กับคลาสและสิ่งที่ทำ โปรแกรมเมอร์ที่ใช้ชั้นเรียนของฉันจะมองเข้าไปข้างในอย่างชัดเจนและตระหนักว่า "โอ้ฉันไม่ได้เรียก Initialize!" และมันก็ใช้ได้ แต่ฉันไม่ชอบมัน สิ่งที่ฉันต้องการนึกคิดคือรหัสที่จะไม่คอมไพล์หากไม่มีการเรียกใช้เมธอด ฉันเดาว่ามันเป็นไปไม่ได้ หรือบางสิ่งที่จะมองเห็นได้ชัดเจนทันที ฉันพบว่าตัวเองมีปัญหาด้วยวิธีการปัจจุบันที่ฉันมีที่นี่ซึ่งต่อไปนี้: เพิ่มค่าบูลีนส่วนตัวในชั้นเรียนและตรวจสอบทุกที่ที่จำเป็นหากมีการเริ่มต้นชั้นเรียน ถ้าไม่ฉันจะโยนข้อยกเว้นว่า "ชั้นไม่ได้เริ่มต้นคุณแน่ใจหรือว่าคุณโทร.Initialize(string,string)?" ฉันค่อนข้างโอเคกับวิธีการนี้ แต่มันนำไปสู่โค้ดจำนวนมากที่ถูกคอมไพล์และในที่สุดก็ไม่จำเป็นสำหรับผู้ใช้ปลายทาง นอกจากนี้บางครั้งรหัสก็ยิ่งมากขึ้นเมื่อมีวิธีการมากกว่าการInitiliazeโทร ฉันพยายามทำให้ชั้นเรียนของฉันมีวิธีการ / การกระทำสาธารณะไม่มากเกินไป แต่นั่นก็ไม่ได้แก้ปัญหา แต่ก็ทำให้มันสมเหตุสมผล สิ่งที่ฉันกำลังมองหาคือ วิธีการของฉันถูกต้องหรือไม่ มีดีกว่าไหม พวกคุณทำอะไร / ให้คำแนะนำ? ฉันพยายามที่จะแก้ปัญหาที่ไม่ใช่ปัญหาหรือไม่? ฉันได้รับการบอกเล่าจากเพื่อนร่วมงานว่าเป็นโปรแกรมเมอร์ที่จะตรวจสอบชั้นเรียนก่อนที่จะพยายามใช้ ฉันไม่เห็นด้วยอย่างเคารพ แต่นั่นเป็นอีกเรื่องที่ฉันเชื่อ พูดง่ายๆก็คือฉันกำลังพยายามหาวิธีที่จะไม่ลืมที่จะโทรออกเมื่อมีการนำคลาสนั้นมาใช้ในภายหลังหรือโดยคนอื่น การจำแนก: เพื่อชี้แจงคำถามมากมายที่นี่: ฉันไม่เพียง แต่พูดถึงส่วนเริ่มต้นของชั้นเรียนเท่านั้น แต่ยังเป็นตลอดชีวิต ป้องกันไม่ให้เพื่อนร่วมงานเรียกวิธีการสองครั้งตรวจสอบให้แน่ใจว่าพวกเขาเรียก X …

12
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะส่งอินสแตนซ์ผ่านหลายเลเยอร์
ในการออกแบบโปรแกรมของฉันฉันมักจะมาถึงจุดที่ฉันต้องผ่านวัตถุกรณีผ่านหลายชั้นเรียน ตัวอย่างเช่นถ้าฉันมีตัวควบคุมที่โหลดไฟล์เสียงแล้วส่งต่อไปยังผู้เล่นและผู้เล่นส่งต่อไปยังผู้เล่นเรียกใช้ซึ่งส่งผ่านอีกครั้งที่อื่นเป็นต้นมันดูไม่ดี แต่ฉันไม่ชอบ รู้วิธีหลีกเลี่ยง หรือว่าตกลงที่จะทำเช่นนี้? แก้ไข: บางทีตัวอย่างผู้เล่นอาจไม่ดีที่สุดเพราะฉันสามารถโหลดไฟล์ได้ในภายหลัง แต่ในกรณีอื่น ๆ ที่ใช้งานไม่ได้

6
ผู้ทะเยอทะยานควรโยนข้อยกเว้นถ้าวัตถุนั้นมีสถานะที่ไม่ถูกต้อง?
ฉันมักจะพบปัญหานี้โดยเฉพาะใน Java แม้ว่าฉันคิดว่ามันเป็นปัญหา OOP ทั่วไป นั่นคือการเพิ่มข้อยกเว้นพบปัญหาการออกแบบ สมมติว่าฉันมีคลาสที่มีString nameฟิลด์และString surnameฟิลด์ จากนั้นจะใช้ฟิลด์เหล่านั้นเพื่อเขียนชื่อเต็มของบุคคลเพื่อแสดงในเอกสารบางประเภทพูดใบแจ้งหนี้ public void String name; public void String surname; public String getCompleteName() {return name + " " + surname;} public void displayCompleteNameOnInvoice() { String completeName = getCompleteName(); //do something with it.... } ตอนนี้ฉันต้องการเสริมสร้างพฤติกรรมของชั้นเรียนของฉันโดยการโยนข้อผิดพลาดถ้าdisplayCompleteNameOnInvoiceมีการเรียกก่อนที่ชื่อจะได้รับมอบหมาย ดูเหมือนจะเป็นความคิดที่ดีใช่ไหม? ฉันสามารถเพิ่มรหัสยกข้อยกเว้นให้กับgetCompleteNameวิธีการ แต่ด้วยวิธีนี้ฉันละเมิดสัญญา 'โดยนัย' กับผู้ใช้คลาส ใน getters ทั่วไปไม่ควรโยนข้อยกเว้นหากไม่ได้ตั้งค่า …

6
อะไรคือข้อเสียของการกำหนดคลาสเป็นคลาสย่อยของรายการของตัวเอง?
ในโครงการล่าสุดของฉันฉันกำหนดคลาสด้วยส่วนหัวต่อไปนี้: public class Node extends ArrayList<Node> { ... } อย่างไรก็ตามหลังจากพูดคุยกับอาจารย์ประจำ CS ของฉันเขากล่าวว่าในชั้นเรียนจะ "น่ากลัวสำหรับความทรงจำ" และ "การปฏิบัติที่ไม่ดี" ฉันไม่ได้พบคนแรกที่เป็นจริงโดยเฉพาะและที่สองที่จะเป็นอัตนัย เหตุผลของฉันสำหรับการใช้งานนี้คือฉันมีความคิดสำหรับวัตถุที่จำเป็นต้องกำหนดเป็นสิ่งที่อาจมีความลึกตามอำเภอใจซึ่งพฤติกรรมของอินสแตนซ์สามารถกำหนดได้ทั้งโดยการใช้งานที่กำหนดเองหรือพฤติกรรมของวัตถุหลายอย่างเช่น . สิ่งนี้จะช่วยให้การนามธรรมของวัตถุที่มีการใช้งานทางกายภาพจะประกอบด้วยองค์ประกอบย่อยหลายโต้ตอบ ในทางกลับกันฉันเห็นว่านี่อาจเป็นการปฏิบัติที่ไม่ดี แนวคิดของการกำหนดสิ่งที่เป็นรายการของตัวเองนั้นไม่ง่ายหรือสามารถนำไปใช้งานได้จริง มีเหตุผลที่ถูกต้องหรือไม่ทำไมฉันไม่ควรใช้รหัสนี้ในการพิจารณาการใช้งานของฉัน ¹หากฉันจำเป็นต้องอธิบายเรื่องนี้เพิ่มเติมฉันยินดีที่จะ; ฉันแค่พยายามทำให้คำถามนี้สั้นกระชับ

6
ต้องการสมาชิกชั้นเรียนหรือผ่านการขัดแย้งระหว่างวิธีการภายใน?
สมมติว่าในส่วนส่วนตัวของคลาสมีค่าที่ใช้โดยวิธีส่วนตัวหลายวิธี คนชอบมีการกำหนดนี้เป็นตัวแปรสมาชิกสำหรับชั้นเรียนหรือผ่านมันเป็นอาร์กิวเมนต์สำหรับแต่ละวิธี - และทำไม ในอีกด้านหนึ่งฉันสามารถเห็นการโต้เถียงที่จะทำให้การลดสถานะ (เช่นตัวแปรสมาชิก) ในชั้นเรียนโดยทั่วไปเป็นสิ่งที่ดีแม้ว่าค่าเดียวกันจะถูกใช้ซ้ำหลายครั้งตลอดทั้งวิธีการเรียนดูเหมือนว่าจะเหมาะ ผู้สมัครเพื่อเป็นตัวแทนของรัฐในชั้นเรียนเพื่อให้รหัสชัดเจนขึ้นถ้าไม่มีอะไรอื่น แก้ไข: เพื่ออธิบายความเห็น / คำถามบางอย่างที่ยกขึ้นฉันไม่ได้พูดถึงค่าคงที่และนี่ไม่ได้เกี่ยวข้องกับกรณีเฉพาะ แต่เป็นเพียงสมมติฐานที่ฉันได้พูดคุยกับคนอื่น ๆ ไม่สนใจมุม OOP สักครู่กรณีการใช้งานเฉพาะที่ฉันมีในใจคือต่อไปนี้ (สมมติว่าผ่านโดยการอ้างอิงเพียงเพื่อให้ตัวทำความสะอาดรหัสเทียม) int x doSomething(x) doAnotherThing(x) doYetAnotherThing(x) doSomethingElse(x) ดังนั้นสิ่งที่ฉันหมายถึงคือมีตัวแปรบางอย่างที่เป็นเรื่องธรรมดาระหว่างฟังก์ชั่นหลายอย่าง - ในกรณีที่ฉันจำได้ว่ามันเป็นเพราะการผูกมัดของฟังก์ชั่นขนาดเล็ก ในระบบ OOP หากวิธีการเหล่านี้เป็นวิธีการเรียน (พูดเนื่องจากการปรับโครงสร้างด้วยวิธีการแยกจากวิธีการขนาดใหญ่) ตัวแปรนั้นสามารถส่งผ่านไปรอบ ๆ พวกเขาทั้งหมดหรืออาจเป็นสมาชิกชั้นเรียน

9
การสร้างคลาสย่อยสำหรับอินสแตนซ์เฉพาะเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่?
พิจารณาการออกแบบดังต่อไปนี้ public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override string Name …

4
ทำไมจึงชอบคลาสภายในที่ไม่คงที่มากกว่าสแตติก
คำถามนี้เกี่ยวกับว่าจะสร้างคลาสที่ซ้อนใน Java เป็นคลาสที่ซ้อนกันหรือคลาสซ้อนภายใน ฉันค้นหาแถว ๆ นี้และใน Stack Overflow แต่ไม่พบคำถามใด ๆ เกี่ยวกับความหมายของการออกแบบของการตัดสินใจนี้ คำถามที่ฉันพบกำลังถามเกี่ยวกับความแตกต่างระหว่างคลาสแบบคงที่และแบบซ้อนภายในซึ่งชัดเจนสำหรับฉัน อย่างไรก็ตามฉันยังไม่พบเหตุผลที่น่าเชื่อถือที่จะใช้คลาสที่ซ้อนกันแบบคงที่ใน Java - ยกเว้นคลาสที่ไม่ระบุชื่อซึ่งฉันไม่ได้พิจารณาสำหรับคำถามนี้ นี่คือความเข้าใจของฉันเกี่ยวกับผลของการใช้คลาสที่ซ้อนกันคงที่: การมีเพศสัมพันธ์น้อย:โดยทั่วไปแล้วเราจะได้แต่งงานกันน้อยลงเนื่องจากชั้นเรียนไม่สามารถเข้าถึงคุณลักษณะของชั้นนอกได้โดยตรง การมีเพศสัมพันธ์น้อยโดยทั่วไปหมายถึงคุณภาพของรหัสที่ดีขึ้นการทดสอบที่ง่ายขึ้นการปรับโครงสร้างใหม่และอื่น ๆ โสดClass:ตัวโหลดคลาสไม่จำเป็นต้องดูแลคลาสใหม่ทุกครั้งที่เราสร้างวัตถุของคลาสภายนอก เราเพิ่งได้รับวัตถุใหม่สำหรับคลาสเดียวกันซ้ำแล้วซ้ำอีก สำหรับชั้นในฉันมักจะพบว่าผู้คนพิจารณาการเข้าถึงคุณลักษณะของชั้นนอกเป็นมืออาชีพ ฉันขอแตกต่างกันในเรื่องนี้จากมุมมองของการออกแบบเนื่องจากการเข้าถึงโดยตรงหมายความว่าเรามีคลัปสูงและหากเราต้องการแยกคลาสที่ซ้อนกันออกเป็นคลาสระดับบนที่แยกต่างหากเราสามารถทำได้หลังจากเปลี่ยน มันเป็นคลาสที่ซ้อนกันคงที่ ดังนั้นคำถามของฉันมาถึงสิ่งนี้: ฉันคิดผิดว่าการเข้าถึงคุณลักษณะที่มีให้กับคลาสภายในแบบไม่คงที่ทำให้เกิดการเชื่อมต่อสูงดังนั้นจึงมีคุณภาพรหัสต่ำกว่าและฉันอนุมานจากสิ่งนี้ว่าคลาสที่ซ้อนกัน โดยทั่วไปจะคงที่? หรืออีกนัยหนึ่ง: มีเหตุผลที่น่าเชื่อถือไหมว่าทำไมคนเราถึงชอบชนชั้นในที่ซ้อนกัน?

5
เป็นวิธีปฏิบัติที่ดีในการสร้าง ClassCollection ของคลาสอื่นหรือไม่?
ให้บอกว่าฉันมีCarคลาส: public class Car { public string Engine { get; set; } public string Seat { get; set; } public string Tires { get; set; } } ให้บอกว่าเรากำลังสร้างระบบเกี่ยวกับที่จอดรถฉันจะใช้Carคลาสจำนวนมากดังนั้นเราจึงสร้างCarCollectionคลาสมันอาจมีวิธีการโฆษณาสองสามอย่างเช่นFindCarByModel: public class CarCollection { public List<Car> Cars { get; set; } public Car FindCarByModel(string model) { // code here return new Car(); …

5
เมื่อใดและทำไมต้องใช้คลาสที่ซ้อนกัน?
การใช้การเขียนโปรแกรมเชิงวัตถุเรามีพลังในการสร้างคลาสภายในคลาส (คลาสที่ซ้อนกัน) แต่ฉันไม่เคยสร้างคลาสที่ซ้อนกันในประสบการณ์การเข้ารหัส 4 ปีของฉัน คลาสที่ซ้อนกันมีประโยชน์อย่างไร? ฉันรู้ว่าชั้นสามารถทำเครื่องหมายเป็นส่วนตัวถ้ามันซ้อนและเราสามารถเข้าถึงสมาชิกส่วนตัวทั้งหมดของชั้นนั้นจากชั้นที่มี เราสามารถทำให้ตัวแปรเป็นส่วนตัวในชั้นเรียนที่มีตัวมันเอง เหตุใดจึงสร้างคลาสที่ซ้อนกัน ในสถานการณ์ใดควรใช้คลาสที่ซ้อนกันหรือมีประสิทธิภาพมากกว่าในแง่ของการใช้งานมากกว่าเทคนิคอื่น ๆ ?

3
พารามิเตอร์ทางเลือกหรือตัวสร้างที่มากเกินไป
ฉันกำลังดำเนินการDelegateCommandและเมื่อฉันกำลังจะใช้ตัวสร้างฉันจะมาพร้อมกับสองตัวเลือกการออกแบบต่อไปนี้: 1: มีตัวสร้างโอเวอร์โหลดหลายตัว public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute, Func<T, bool> canExecute) { this.execute = execute; this.canExecute = canExecute; } 2: มีคอนสตรัคเตอร์เดียวเท่านั้นที่มีพารามิเตอร์เป็นตัวเลือก public DelegateCommand(Action<T> execute, Func<T, bool> canExecute = null) { this.execute = execute; this.canExecute = canExecute; } ฉันไม่รู้ว่าจะใช้อันไหนเพราะฉันไม่รู้ว่าข้อดี / ข้อเสียที่เป็นไปได้มาจากวิธีใดวิธีหนึ่งจากสองวิธีที่เสนอ ทั้งสองสามารถถูกเรียกเช่นนี้: var command = …

10
เราอยู่ได้โดยปราศจากสิ่งก่อสร้าง?
สมมติว่าด้วยเหตุผลบางอย่างวัตถุทั้งหมดจะถูกสร้างขึ้นด้วยวิธีนี้ $ obj = CLASS :: getInstance () จากนั้นเราฉีดการอ้างอิงโดยใช้ setters และทำการเริ่มต้นการเริ่มต้นโดยใช้ $ obj-> initInstance (); มีปัญหาหรือสถานการณ์จริงใดบ้างที่ไม่สามารถแก้ไขได้ถ้าเราจะไม่ใช้ตัวสร้างเลย Ps เหตุผลในการสร้างวัตถุด้วยวิธีนี้คือเราสามารถแทนที่คลาสใน getInstance () ตามกฎบางอย่าง ฉันทำงานใน PHP ถ้าเป็นเช่นนั้น

5
คลาสควรรู้เกี่ยวกับคลาสย่อยหรือไม่?
คลาสควรรู้เกี่ยวกับคลาสย่อยหรือไม่? คลาสควรทำสิ่งที่เฉพาะเจาะจงสำหรับคลาสย่อยที่กำหนดเช่น? สัญชาตญาณของฉันบอกฉันว่ามันเป็นการออกแบบที่ไม่ดีดูเหมือนว่าจะมีรูปแบบต่อต้านบางอย่าง

2
เป็นความคิดที่ดีหรือไม่ที่จะให้ลายเซ็นฟังก์ชันที่แตกต่างกันซึ่งทำสิ่งเดียวกัน
นี่คือคลาส C ++ ที่สร้างขึ้นด้วยค่าสามค่า class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; ชนิดพารามิเตอร์ทั้งหมดแตกต่างกัน ฉันสามารถสร้างคอนสตรัคเตอร์มากเกินไปเพื่อให้ลำดับนั้นไม่สำคัญ class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, std::string, int); Foo(int, std::string, char); Foo(int, char, std::string); private: std::string foo; char bar; int baz; }; แต่นั่นเป็นความคิดที่ดี? …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.