c++类和对象一对象特性一成员变量和成员函数分开存储

简介: c++类和对象一对象特性一成员变量和成员函数分开存储

在C++中,类的成员变量和成员函数是分开存储的。成员变量是类的属性,它们代表了类的状态或数据;而成员函数是类的行为,它们定义了类可以执行的操作。在内存中,成员变量通常存储在类的实例(对象)中,而成员函数则存储在代码段中,并且与类关联。

 

成员变量

成员变量是类的属性,它们与类的每个对象相关联。当创建类的对象时,会在堆内存中为该对象的成员变量分配空间。每个对象都有自己独立的成员变量副本,这意味着修改一个对象的成员变量不会影响到其他对象的成员变量。

 

成员函数

成员函数是类的行为,它们定义了类可以执行的操作。成员函数通常存储在代码段中,并且与类关联。无论创建多少个类的对象,成员函数只存储一次。当调用对象的成员函数时,会传递对象的指针(或引用)作为隐式参数,以便函数能够访问和修改对象的成员变量。

 

示例代码

下面是一个简单的C++类示例,演示了成员变量和成员函数的分开存储:

image.png

image.png

在上面的代码中,Person 类有两个成员变量:name 和 age,以及一个成员函数 display()。当创建 person1 和 person2 这两个对象时,它们的成员变量 name 和 age 分别在各自的堆内存空间中存储。而成员函数 display() 则只存储一次在代码段中,并且可以被所有 Person 类的对象共享。

 

成员变量和成员函数的访问

成员变量通常通过成员函数进行访问和修改,以封装类的内部状态。这样做可以提供更好的数据安全性,防止外部代码直接访问和修改成员变量,从而避免潜在的问题。

 

在上面的示例中,display() 成员函数可以访问私有成员变量 name 和 age,并将它们打印到控制台。由于 name 和 age 是私有的,因此外部代码不能直接访问它们,只能通过 display() 成员函数间接访问。

 

总结

C++中的类和对象通过分开存储成员变量和成员函数来实现封装性。成员变量存储在对象的实例中,而成员函数存储在代码段中,并且与类关联。这种分开存储的方式使得每个对象都有自己独立的成员变量副本,而成员函数则可以被所有对象共享。通过成员函数访问和修改成员变量,可以提供更好的数据安全性。

目录
相关文章
|
2天前
|
安全 JavaScript 前端开发
C++一分钟之-C++17特性:结构化绑定
【6月更文挑战第26天】C++17引入了结构化绑定,简化了从聚合类型如`std::tuple`、`std::array`和自定义结构体中解构数据。它允许直接将复合数据类型的元素绑定到单独变量,提高代码可读性。例如,可以从`std::tuple`中直接解构并绑定到变量,无需`std::get`。结构化绑定适用于处理`std::tuple`、`std::pair`,自定义结构体,甚至在范围for循环中解构容器元素。注意,绑定顺序必须与元素顺序匹配,考虑是否使用`const`和`&`,以及谨慎处理匿名类型。通过实例展示了如何解构嵌套结构体和元组,结构化绑定提升了代码的简洁性和效率。
16 5
|
1天前
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
15 3
|
2天前
|
C++
C++函数对象(仿函数)
C++函数对象(仿函数)
6 0
|
2天前
|
C++
C++类和对象3
C++类和对象
7 0
|
2天前
|
存储 编译器 C++
C++类和对象2
C++类和对象
9 0
|
2天前
|
C++
C++类和对象1
C++类和对象
15 0
|
2天前
|
编译器 C++
【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)
【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)
5 0
|
3天前
|
安全 编译器 C++
【C++】学习笔记——类和对象_5
【C++】学习笔记——类和对象_5
17 9
|
3天前
|
编译器 C++
【C++】学习笔记——类和对象_4
【C++】学习笔记——类和对象_4
13 6
|
3天前
|
存储 编译器 C++
【C++】学习笔记——类和对象_3
【C++】学习笔记——类和对象_3
17 6