This is the talk page for discussing improvements to the Function pointer article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
This article is rated Start-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||||||||||||
|
Method Pointers
editthis is a pointer to object. To access its member's data, one needs to dereference this first and then to dereference that member if it is a pointer. Pointer-to-member operators are not related to this. Citing cppreference: When a non-static class member is used in any of the contexts where the this keyword is allowed (non-static member function bodies, member initializer lists, default member initializers), the implicit this-> is automatically added before the name, resulting in a member access expression (which, if the member is a virtual member function, results in a virtual function call). — Preceding unsigned comment added by 5.20.191.37 (talk) 21:12, 27 December 2022 (UTC)
Type safety in older languages?
editFunction pointers in C and C++ are both type-safe. How are they any less type-safe than, say delegates in C#? I keep hearing this untrue statement. — Preceding unsigned comment added by 130.76.96.111 (talk) 19:13, 6 September 2013 (UTC)
Object-oriented equivalent?
editPerhaps there could be something here showing how the same thing can be achieved using Object Oriented Programming? Ubermonkey 20:35, 2 Apr 2005 (UTC)
Also a nice implementation of this using a class where the method is passed as a function pointer (so a method pointer i guess). I've been trying to find an example of this everywhere and i can't find it. -Sharth --128.175.13.43 17:54, 26 October 2005 (UTC)
It would also be nice if the program actually worked.. say.. if it had a definition for the "list" or "listnode" types. Fresheneesz 07:56, 5 June 2006 (UTC)
- One way to do the equivalent of function pointers in Java is to define an interface with a single method. Then one or more classes can implement the interface, and objects of these class types can be passed to other methods. These interface references act something like method pointers:
public interface Foo { public abstract int perf(int a); } class MyFoo implements Foo { public int perf(int a) { return (2*a + 3); } } public class Test { static Foo s_func; public static void main(String[] args) { int x; setFunc(new MyFoo()); x = callFunc(10); } void setFunc(Foo f) { s_func = f; } int callFunc(int a) { return s_func.perf(a); } }
Not using function pointers
edit"Imagine rewriting the above code without function pointers. The fsum() and fproduct() function would both require loops iterating through the linked list." Isn't it contradicting to say that when the code does exactly that--or am I missing something? Guardian653 03:55, 2 December 2006 (UTC)
- Agreed. Seems like the author is not NPOV since he calls it a "clearly" "powerful" mechanism. Using it to obfuscate code is arguably not the best application of this feature. 24.6.99.30 12:50, 3 January 2007 (UTC)
Procedural parameter
editProcedural parameter seems to have a lot in common with this article. If someone agrees, should these two articles mention each other, or maybe even be merged? --Abdull (talk) 11:58, 26 July 2008 (UTC)
Java
editJava's lack of function pointers should be noted/explained. Fig (talk) 14:01, 30 September 2013 (UTC)
- Technically, any language supporting abstract interfaces has the same capabilities as function pointers. Using an interface containing a single method effectively makes that a typed function pointer. It's not an exact capability, though, because you can't pass just any (type-matching) method as a parameter to a method expecting a method pointer, or assign it to a method pointer; any such method you use as a method pointer must be defined as implementing the method of the abstract interface, and an actual object must be associated with the method being referenced. But the ability to pass or store a reference to a properly defined method (which is just a function pointer deep down) still exists in these languages. This might be one reason that delegates were never added to Java by its designers, since some programmers consider them unnecessary syntactic sugar for an already-existing feature. — Loadmaster (talk) 17:55, 30 September 2013 (UTC)
- funtion of text select 154.160.5.65 (talk) 21:53, 27 February 2024 (UTC)
External links modified
editHello fellow Wikipedians,
I have just modified one external link on Function pointer. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
- Added archive https://web.archive.org/web/20041013202445/http://www.parashift.com/c++-faq-lite/pointers-to-members.html to http://www.parashift.com/c++-faq-lite/pointers-to-members.html
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018. After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than regular verification using the archive tool instructions below. Editors have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the RfC before doing mass systematic removals. This message is updated dynamically through the template {{source check}}
(last update: 5 June 2024).
- If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
- If you found an error with any archives or the URLs themselves, you can fix them with this tool.
Cheers.—InternetArchiveBot (Report bug) 21:49, 8 October 2017 (UTC)