gpt4 book ai didi

c++ - 为什么编译器不为类内声明的变量分配内存?

转载 作者:行者123 更新时间:2023-11-30 19:53:42 25 4
gpt4 key购买 nike

当我们在 C/C++ 中的 classstruct 中声明某个变量时,我们必须创建一个 class 的对象struct 为变量分配内存。

为什么我们不能在没有任何对象的情况下直接访问这些变量?

最佳答案

嗯,答案确实是:因为这就是该语言功能的全部意义。类的数据成员的真正想法是让它成为类对象的组成部分。它与整个类对象一起开始其生命,并一起结束其生命。

如果有两个类对象,则有两个完全独立的数据成员集。如果有 50 个类对象,则有 50 个完全独立的数据成员集。如果类对象为零,则没有可供访问的数据成员集。换句话说,如果没有类对象,您就无法访问这些“变量”,因为没有类对象它们就不存在。

当您在类定义中声明类的数据成员时,您并不是真正“声明变量”。类定义只是描述类类型的布局。就其本身而言,它不会产生任何物理内容,即指出它将存在于数据内存中,并指出您可以物理访问。

同时,C++语言有类的静态成员的概念。类的静态数据成员不与特定的类对象关联。它们独立存在。事实上,静态数据成员只是普通的全局变量,被一层相当薄的 C++ 特定的“语法糖”(更详细的命名、访问控制等)覆盖。类的静态数据成员可以像普通变量一样访问,而不需要任何其他变量。对象。

换句话来说,这不是一个“为什么?”的问题。而是你需要什么的问题。如果您需要非静态数据成员功能,请使用非静态数据成员。如果您想要静态数据成员功能...好吧,您明白了。

关于c++ - 为什么编译器不为类内声明的变量分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com