Friday 15 March 2013

c++ - Calling an overload with pointers without allocating new memory -


अधिभार पर विचार करें:

  void foo (int) {std :: cout & lt; & LT; "Foo (int) कहा जाता है। \ N";} void foo (int *) {std :: cout & lt; & lt; "फू (इंट *) कहा जाता है। \ N";} void foo (चार *) {std :: cout & lt; & lt; "फू (चार *) कहा जाता है। \ N";} शून्य foo (bool *) {std :: cout & lt; & lt; "Foo (bool *) कहा जाता है। \ N";}  

जबकि

  foo (int {});  

पहले अधिभार को कॉल करेगा, नया आंत आवंटित किए बिना दूसरे अधिभार को कॉल करने का सबसे साफ तरीका क्या है?

  foo (static_cast और lt; int * और gt; (nullptr)) से बेहतर कुछ भी;  

क्या मैं यहाँ एक साधारण सिंटैक्स लापता हूँ?

जबकि < Code> foo (int * {}) काम नहीं करता, और foo ((int *) {}) केवल कुछ कंपलर पर काम करता है, foo (int *) 0) शायद सबसे छोटा, समझने में आसान और काम करने की गारंटी है।


No comments:

Post a Comment