C + + Object-oriented programming: memory allocation and static members of objects

Source: Internet
Author: User
Tags class definition

An object is an instance of a class, and memory allocations occur at the time of the declaration of the object, rather than the definition of the class, but each memory allocation does not always allocate memory space for each object's member function, and once it becomes part of the definition of the class, the member function is created once in memory, Because all objects of the same class use the same member function, there is no need to allocate memory space for each object's member function. For each object, it only has the data members to get the corresponding memory space.

As shown, slightly rougher

650) this.width=650; "src=" Http://s3.51cto.com/wyfs02/M00/7A/C6/wKiom1a0ol2wdrblAAA4K_JXdZQ666.png "title=" Qq20160205212204.png "alt=" Wkiom1a0ol2wdrblaaa4k_jxdzq666.png "/>

static member functions and static member data

The static member function and the life cycle of a static data member are the beginning of the program run to the end of the run, that is, the static member function and the static data member are persisted in memory, and all the objects of the same class share all the static data members in the classes .

In addition, a static function has the following characteristics:

1. Only static member functions in a class can be called, as well as static data members.

2. Add the static keyword only to the declaration of the class, no static modifier is required for the specific definition

Class test{public:static void Show (); In-class definition}void test::show () {//Concrete implementation Method}

As an example:

    #include  <iostream>using namespace std;class item{public:     void add (int i);     void show ();     Static void display ();p rivate:    static int count ;     //cannot assign itself, the system initializes the static variable to 0};int item::count;//to be declared outside the definition of the class//Because static data members are stored independently, not as part of an object Void item: : Add (int i) {    count+=i;} Void item::show () {    cout<< "Now the count is:" <<count< < "\ n";} Void item::d isplay () {    cout<< "The count is:" <<count<< "\ n ";     //static member function can only invoke other static functions within the class and static data}int main () {    item a,b,c ;     item::d isplay ();     //call     a.add (1) without instantiating the class;     b.add (1);     c.add (1);     a.show ();     b.show ();     c.show ();     item::d isplay ();     return 0;}

After running as shown:

650) this.width=650; "src=" Http://s4.51cto.com/wyfs02/M00/7A/C7/wKioL1a1dvKS5KA4AABNNZRzD9A720.png "title=" Qq20160206122900.png "alt=" Wkiol1a1dvks5ka4aabnnzrzd9a720.png "/>

C + + Object-oriented programming: memory allocation and static members of objects

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.