Chronological Overview 
 Type-Hierarchical Overview 
Formal Methods in Computing
(Most of the papers antecedent to 1995
are not included in the list)
FRAMES  NO FRAME 

BCV06 (Article)
Author(s) Lorenzo Bettini, Sara Capecchi and Betti Venneri
Title« Double Dispatch in C++ »
JournalSoftware - Practice and Experience
Volume36
Number6
Page(s)581 - 613
Year2006
URLhttp://rap.dsi.unifi.it/~bettini/bibliography/files/spelxb.ps.gz
Abstract
Double dispatch is the ability of selecting dynamically a method not only according to the run-time type of the receiver (single dispatch), but also to the run-time type of the argument. This mechanism unleashes the power of dynamic binding in object-oriented languages, so enhancing re-usability and separation of responsibilities. However, many mainstream languages, such as, e.g., C++ and Java, do not provide it, resorting to only single dispatch. In this paper we propose an extension of C++ (applicable also to other OO languages) that enables double dispatch as a language feature. This yields dynamic overloading and covariant specialization of methods. We define a translation from the new constructs to standard C++ and we present the preprocessor implementing this translation, called doublecpp. The translated code enjoys static type safety and implements the semantics of double dispatch by using only standard mechanisms of static overloading and dynamic binding, with minimal impact on the performance of the program.

BibTeX code

@article{BCV06,
  number = {6},
  volume = {36},
  author = {Bettini, Lorenzo and Capecchi, Sara and Venneri, Betti},
  url = {http://rap.dsi.unifi.it/~bettini/bibliography/files/spelxb.ps.gz},
  title = {{Double Dispatch in C++}},
  abstract = {Double dispatch is the ability of selecting dynamically a method
              not only according to the run-time type of the receiver (single
              dispatch), but also to the run-time type of the argument. This
              mechanism unleashes the power of dynamic binding in
              object-oriented languages, so enhancing re-usability and
              separation of responsibilities. However, many mainstream
              languages, such as, e.g., C++ and Java, do not provide it,
              resorting to only single dispatch. In this paper we propose an
              extension of C++ (applicable also to other OO languages) that
              enables double dispatch as a language feature. This yields dynamic
              overloading and covariant specialization of methods. We define a
              translation from the new constructs to standard C++ and we present
              the preprocessor implementing this translation, called doublecpp.
              The translated code enjoys static type safety and implements the
              semantics of double dispatch by using only standard mechanisms of
              static overloading and dynamic binding, with minimal impact on the
              performance of the program.},
  pages = {581 - 613},
  year = {2006},
  journal = {Software - Practice and Experience},
}


 Chronological Overview 
 Type-Hierarchical Overview 
Formal Methods in Computing
(Most of the papers antecedent to 1995
are not included in the list)
FRAMES  NO FRAME 

This document was generated by bib2html 3.3.
(Modified by Luca Paolini, under the GNU General Public License)

Valid HTML 4.01!