Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Intermediate
Jun 2, 1999



Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

Accessing a C++ Object in C Code

C code, which of course is unaware of object semantics, can access the data members of a C++ object directly, but certain requirements must be met. There are some guarantees about the underlying memory layout of an object. C code can take advantage of these guarantees and treat a C++ object as an ordinary data struct, provided that all the following restrictions apply to the class of the object in question:
  • The class has no virtual member functions (including inherited virtual functions of a base class).
  • The class has no virtual base classes in the entire inheritance chain.
  • The class has no member objects that have either a virtual base class or virtual member functions.
  • All the data members of the class are declared without an intervening access specifier.
The compatible memory layout of C++ objects and C structs has many useful applications. For example, it enables relational databases to retrieve and insert objects into a database table. Data Manipulation Languages, such as SQL, that do not support object semantics, can still treat a "live" object as a raw chunk of memory. In fact, several commercial databases rely on this compatibility to provide an object-oriented interface with an underlying relational data model. Another application is the capability to transmit objects as a stream of bytes from one machine to another.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date