gpt4 book ai didi

c++ - 在声明末尾或在 main 中声明结构或类的实例之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 16:16:49 25 4
gpt4 key购买 nike

声明 like guy 和 like cow 有什么区别?在结构末尾声明会改变实例的范围吗?其中之一被认为是更好的做法吗?如果是这样,为什么?

#include <iostream>

struct person{
int age;
} guy;

struct animal{
int age;
};

int main(){
animal cow;
cow.age = 10;

guy.age = 20;

return 0;
}

最佳答案

范围存储持续时间都会受到影响。

范围:

  • cowmain 中有局部作用域,在全局作用域中不可见。
  • guy 具有全局作用域,因此在嵌套作用域中也可见(例如 main 内的作用域)。

存储时间:

  • cow 是一个具有自动存储持续时间的对象。它的生命周期从它的定义 (animal cow;) 开始,到以下时间结束它超出范围(在本例中,当 main 返回时)。

  • guy静态存储持续时间。它的生命周期从程序运行时开始(甚至在输入 main 之前)并持续直到程序结束。

全局变量通常被认为是不好的做法。变量的范围应尽可能窄 - 这样可以更轻松地推断出它们发生了什么并限制错误。

关于c++ - 在声明末尾或在 main 中声明结构或类的实例之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942380/

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