คำถามติดแท็ก overloading

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

10
ฟังก์ชันโอเวอร์โหลดและการแทนที่ใน php คืออะไร?
ใน PHP คุณหมายถึงอะไรเมื่อฟังก์ชันโอเวอร์โหลดและการลบล้างฟังก์ชัน และทั้งคู่ต่างกันอย่างไร? คิดไม่ออกว่าอะไรคือความแตกต่างระหว่างพวกเขา

4
ทำไม String.valueOf (null) จึงโยน NullPointerException
ตามเอกสารวิธีการString.valueOf(Object obj)คืนค่า: ถ้าอาร์กิวเมนต์เป็นnullสตริงเท่ากับ"null"; มิฉะนั้นมูลค่าของobj.toString()จะถูกส่งกลับ แต่เมื่อฉันพยายามทำสิ่งนี้: System.out.println("String.valueOf(null) = " + String.valueOf(null)); มันพ่น NPE แทน? (ลองเองถ้าไม่เชื่อ!) ข้อยกเว้นในเธรด "main" java.lang.NullPointerException ที่ java.lang.String. (ไม่ทราบแหล่งที่มา) ที่ java.lang.String.valueOf (ไม่ทราบแหล่งที่มา) มันเกิดขึ้นได้อย่างไร? เอกสารโกหกฉันหรือเปล่า นี่เป็นข้อผิดพลาดที่สำคัญใน Java หรือไม่?

5
`is_base_of` ทำงานอย่างไร
รหัสต่อไปนี้ทำงานอย่างไร typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const; operator D*(); }; template <typename B, typename D> struct is_base_of { template <typename T> static yes check(D*, T); static no check(B*, int); static const bool value = sizeof(check(Host<B,D>(), int())) == sizeof(yes); }; …


11
เหตุใดจึงไม่เรียกเมธอด public const เมื่อ non-const เป็นแบบส่วนตัว
พิจารณารหัสนี้: struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } ข้อผิดพลาดของคอมไพเลอร์คือ: ข้อผิดพลาด: 'void A :: foo ()' is private` แต่เมื่อฉันลบไพรเวตมันก็ใช้ได้ เหตุใดจึงไม่เรียกเมธอด public const เมื่อ non-const เป็นแบบส่วนตัว …

8
โอเวอร์โหลดด้วยประเภทผลตอบแทนที่แตกต่างกันใน Java?
เหตุใดจึงไม่สามารถโอเวอร์โหลดฟังก์ชันได้เพียงแค่เปลี่ยนประเภทการส่งคืน จะมีการเปลี่ยนแปลงใน Java เวอร์ชันอนาคตหรือไม่? อย่างไรก็ตามสำหรับการอ้างอิงสิ่งนี้เป็นไปได้ใน C ++ หรือไม่?
104 java  overloading 

8
วิธีการโอเวอร์โหลดถูกเลือกอย่างไรเมื่อพารามิเตอร์เป็นค่า null ตามตัวอักษร
ฉันเจอคำถามนี้ในแบบทดสอบ public class MoneyCalc { public void method(Object o) { System.out.println("Object Verion"); } public void method(String s) { System.out.println("String Version"); } public static void main(String args[]) { MoneyCalc question = new MoneyCalc(); question.method(null); } } ผลลัพธ์ของโปรแกรมนี้คือ "String Version" แต่ฉันไม่เข้าใจว่าทำไมการส่ง null ไปยังเมธอดที่โอเวอร์โหลดจึงเลือกเวอร์ชันสตริง เป็น null ตัวแปร String ชี้ไปที่อะไร? อย่างไรก็ตามเมื่อเปลี่ยนรหัสเป็น public class MoneyCalc …
98 java  overloading 

1
การแก้ปัญหาโอเวอร์โหลดที่คลุมเครือบนตัวชี้ฟังก์ชันและฟังก์ชัน std :: สำหรับแลมบ์ดาโดยใช้ +
ในรหัสต่อไปนี้การเรียกครั้งแรกถึงfooไม่ชัดเจนดังนั้นจึงไม่สามารถรวบรวมได้ ประการที่สองด้วยการเพิ่ม+ก่อนแลมบ์ดาจะแก้ไขการโอเวอร์โหลดของตัวชี้ฟังก์ชัน #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // ambiguous foo( +[](){} ); // not ambiguous (calls the function pointer overload) } อะไรคือสิ่งที่+สัญกรณ์ทำอะไรที่นี่?

13
คุณควรประกาศวิธีการโดยใช้โอเวอร์โหลดหรือพารามิเตอร์เสริมใน C # 4.0 หรือไม่?
ฉันกำลังดูการพูดคุยของ Anders เกี่ยวกับ C # 4.0 และดูตัวอย่างของ C # 5.0และทำให้ฉันนึกถึงเมื่อพารามิเตอร์ที่เป็นทางเลือกมีอยู่ใน C # จะเป็นวิธีที่แนะนำในการประกาศวิธีการที่ไม่จำเป็นต้องระบุพารามิเตอร์ทั้งหมด ยกตัวอย่างเช่นบางอย่างเช่นFileStreamชั้นจะมีประมาณสิบห้าก่อสร้างงานแตกต่างกันซึ่งสามารถแบ่งออกเป็น 'ครอบครัว' ตรรกะเช่นคนที่อยู่ด้านล่างจากสตริงคนจากและคนที่มาจากที่IntPtrSafeFileHandle FileStream(string,FileMode); FileStream(string,FileMode,FileAccess); FileStream(string,FileMode,FileAccess,FileShare); FileStream(string,FileMode,FileAccess,FileShare,int); FileStream(string,FileMode,FileAccess,FileShare,int,bool); สำหรับฉันแล้วดูเหมือนว่ารูปแบบประเภทนี้สามารถทำให้ง่ายขึ้นได้โดยมีตัวสร้างสามตัวแทนและใช้พารามิเตอร์ที่เป็นทางเลือกสำหรับพารามิเตอร์ที่สามารถเป็นค่าเริ่มต้นได้ซึ่งจะทำให้ตระกูลต่างๆของตัวสร้างมีความแตกต่างกันมากขึ้น [หมายเหตุ: ฉันรู้ว่าการเปลี่ยนแปลงนี้จะไม่มี ทำใน BCL ฉันกำลังพูดถึงสมมุติฐานสำหรับสถานการณ์ประเภทนี้] คุณคิดอย่างไร? จาก C # 4.0 จะเหมาะสมกว่าหรือไม่ที่จะทำให้กลุ่มตัวสร้างและวิธีการที่เกี่ยวข้องอย่างใกล้ชิดเป็นวิธีการเดียวที่มีพารามิเตอร์เสริมหรือมีเหตุผลที่ดีที่จะยึดติดกับกลไกการโอเวอร์โหลดแบบดั้งเดิม

5
ฟังก์ชั่นที่มากเกินไปใน Python
เป็นไปได้ไหมที่จะมีฟังก์ชันโอเวอร์โหลดใน Python? ใน C # ฉันจะทำสิ่งที่ชอบ void myfunction (int first, string second) { // Some code } void myfunction (int first, string second , float third) { // Some different code } จากนั้นเมื่อฉันเรียกใช้ฟังก์ชันมันจะแยกความแตกต่างระหว่างทั้งสองตามจำนวนอาร์กิวเมนต์ เป็นไปได้ไหมที่จะทำสิ่งที่คล้ายกันใน Python

8
เป็นไปได้ไหมที่จะลบล้างเมธอดที่ไม่ใช่เสมือนจริง?
มีวิธีใดในการลบล้างเมธอดที่ไม่ใช่เสมือนจริงหรือไม่? หรือสิ่งที่ให้ผลลัพธ์ที่คล้ายกัน (นอกเหนือจากการสร้าง method ใหม่เพื่อเรียก method ที่ต้องการ)? ฉันต้องการลบล้างวิธีการจากMicrosoft.Xna.Framework.Graphics.GraphicsDeviceโดยคำนึงถึงการทดสอบหน่วย

4
วิธี "นำเข้าใหม่" โมดูลไปยัง python จากนั้นโค้ดจะถูกเปลี่ยนหลังจากนำเข้า
ฉันมี foo.py def foo(): print "test" ใน IPython ฉันใช้: In [6]: import foo In [7]: foo.foo() test จากนั้นฉันเปลี่ยนเป็นfoo(): def foo(): print "test changed" ใน IPython ผลลัพธ์ของการเรียกใช้ยังคงเป็นtest: In [10]: import foo In [11]: foo.foo() test จากนั้นฉันใช้: In [15]: del foo In [16]: import foo In [17]: foo.foo() test ฉันลบfoo.pycในโฟลเดอร์เดียวกันfoo.pyแล้ว แต่ยังไม่มีโชค ฉันขอทราบวิธีการนำเข้าโค้ดที่อัปเดตในรันไทม์ได้หรือไม่

3
เหตุใดค่า int ที่เป็นลบมากที่สุดจึงทำให้เกิดข้อผิดพลาดเกี่ยวกับการโอเวอร์โหลดของฟังก์ชันที่ไม่ชัดเจน
ฉันกำลังเรียนรู้เกี่ยวกับการทำงานมากเกินไปใน C ++ และเจอสิ่งนี้: void display(int a) { cout << "int" << endl; } void display(unsigned a) { cout << "unsigned" << endl; } int main() { int i = -2147483648; cout << i << endl; //will display -2147483648 display(-2147483648); } จากสิ่งที่ฉันเข้าใจค่าใด ๆ ที่กำหนดในintช่วง (ในกรณีของฉันintคือ 4 ไบต์) จะเรียกdisplay(int)และค่าใด ๆ ที่อยู่นอกช่วงนี้จะไม่ชัดเจน …

8
จะเกิดอะไรขึ้นถ้าฉันไม่ส่งพารามิเตอร์ในฟังก์ชัน Javascript
ฉันยังใหม่กับโลกของ Javascript และกำลังปรับแต่งกับการเขียนฟังก์ชันพื้นฐานและสะดุดกับตัวอย่างด้านล่างโดยบังเอิญและไม่แน่ใจว่าทำไมถึงใช้งานได้เมื่อฉันไม่ส่งพารามิเตอร์เมื่อฟังก์ชันต้องการ ฟังก์ชั่นตัวอย่าง function myfunction(x) { alert("This is a sample alert"); } ตอนนี้ถ้าฉันเรียกใช้ฟังก์ชันmyfunction();ฉันจะแสดงการแจ้งเตือน เหตุใดฉันจึงสามารถเรียกใช้ฟังก์ชันได้โดยไม่มีข้อผิดพลาดหรือคำเตือนเมื่อฉันไม่ได้ส่งผ่านพารามิเตอร์ แก้ไข ฉันไม่ได้คาดหวังคำตอบที่ยอดเยี่ยมมากมายและฉันก็ไม่ได้อยู่ในสถานะที่สามารถพูดได้ว่าคำตอบใดดีที่สุดดังนั้นฉันจึงสามารถขอให้คนอื่นแนะนำคำตอบที่ดีที่สุดและฉันจะให้รางวัลแก่บุคคลนั้น

7
จะเรียกคุณสมบัติของคลาสฐานได้อย่างไรหากคุณสมบัตินี้ถูกเขียนทับในคลาสที่ได้รับ
ฉันกำลังเปลี่ยนคลาสของฉันจากการใช้ getters และ setters อย่างกว้างขวางเป็นการใช้คุณสมบัติ pythonic มากขึ้น แต่ตอนนี้ฉันติดขัดเพราะ getters หรือ setters ก่อนหน้าของฉันบางคนจะเรียกเมธอดที่สอดคล้องกันของคลาสพื้นฐานแล้วดำเนินการอย่างอื่น แต่จะสำเร็จด้วยสรรพคุณได้อย่างไร? จะเรียกคุณสมบัติ getter หรือ setter ในคลาสพาเรนต์ได้อย่างไร? แน่นอนว่าการเรียกใช้แอตทริบิวต์นั้นจะทำให้เกิดการเรียกซ้ำไม่สิ้นสุด class Foo(object): @property def bar(self): return 5 @bar.setter def bar(self, a): print a class FooBar(Foo): @property def bar(self): # return the same value # as in the base class return self.bar …

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