Content deleted Content added
No edit summary Tags: Reverted Visual edit |
|||
Line 4:
==Rationale==
Passive data structures are appropriate when there is a part of a system where it should be clearly indicated that the detailed logic for data manipulation and integrity are elsewhere. PDSs are often found at the boundaries of a system, where information is being moved to and from other systems or persistent storage and the problem ___domain logic that is found in other parts of the system is irrelevant. For example, PDS would be convenient for representing the field values of objects that are being constructed from external data, in a part of the system where the semantic checks and interpretations needed for valid objects are not applied yet.
==In C++==
A PDS type in [[C++]], or [[Plain Old C++ Object]], is defined as either a scalar type or a PDS class.<ref>{{cite book |author= Information Technology Industry Council |publisher= ISO/IEC |___location= Geneva |title= Programming languages — C++ |id= 14882:2003(E) |edition= Second |date= 2003-10-15}}</ref> A PDS class has no user-defined copy assignment operator, no user-defined destructor, and no non-static data members that are not themselves PDS. Moreover, a PDS class must be an aggregate, meaning it has no user-declared constructors, no private nor protected non-static data, no virtual base classes{{efn|A PDS class can have a base class whose first non-static data members differs.<ref>{{cite book |author= Bjarne Stroustrup |publisher= Pearson Education, Inc |___location= United States of America |title= The C++ programming language |isbn= 978-0-321-56384-2 |edition= Fourth |date= June 2013}}</ref>}} and no virtual functions.<ref>{{cite web |url=http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html |accessdate=6 December 2016 |title=C++ Language Note: POD Types |author=Walter E. Brown |publisher=[[Fermi National Accelerator Laboratory]] |date=September 29, 1999 |archive-url=https://web.archive.org/web/20161203130543/http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html |archive-date=3 December 2016 |url-status=dead }}</ref> The standard includes statements about how PDS must behave in C++. The <code>
In some contexts, C++ allows only PDS types to be used. For example, a <code>union</code> in C++98 cannot contain a class that has [[virtual function]]s or nontrivial constructors or destructors. This restriction is imposed because the compiler cannot determine which constructor or destructor should be called for a union. PDS types can also be used for interfacing with [[C (programming language)|C]], which supports only PDS.
Line 17:
==In other languages==
In [[PHP]], associative arrays and
Other structured data representations such as [[XML]] or [[JSON]] can also be used as a PDS if no significant semantic restrictions are used.
In [[Python (programming language)|Python]],
In [[C (programming language)|C]], structs are used in the same manner
|