【C++】 类、对象内存布局、声明实现分离

      • 对象的内存布局
      • 类的声明和实现分离

用 struct 和class 来定义一个类

C语言里struct是结构体,不能往里面写函数

C++中struct是类,可以往里面写函数

  • 利用类创建对象

    struct Person {  
        int age;    
        void run() {  
            cout << "Person::run - " << age << endl; 
        }
    }
    int main() {  
        Person person; 
        person.age = 10; 
        person.run();  
        Person *p = &person; 
        // 使用指针指向对象  
        p->age = 20; 
        // 使用指针访问对象
        p->run();     
        getchar();   
        return 0;
    }
    

    上面代码中的person对象,p指针的内存都是在函数的栈空间自动分配和回收的。

    • 类所占用的内存只是类中定义的变量大小。比如上述的Person类中只有一个int age变量,Person类只占4个字节。

      问:类中的函数不占用地址大小嘛?

      不占用,因为相同的类不需要重复开辟相同的函数的空间,只需要调用相同的函数即可。但变量是不能相互调用的,所以变量需要每次调用类时开辟新的空间来存放。

    • class 和 struct 的区别(只有这一个

      • struct的默认成员权限是 public :可以直接访问

        class 的默认成员权限是 private :不可以直接访问

你可能感兴趣的:(C++,c++,开发语言)