gpt4 book ai didi

c++ - 将对象创建为私有(private)成员变量与在成员函数中

转载 作者:行者123 更新时间:2023-11-30 01:13:50 32 4
gpt4 key购买 nike

在类声明中将对象创建为私有(private)成员变量与在类的方法定义中创建对象有什么区别?我知道明显的区别是一个是全局变量,另一个是局部变量。什么情况下应该做前者和后者?

Aclass.h

class Aclass{ 
private:
AnotherClass someobj1; //option 1
public:
void someMethod();
};

类.cpp

void Aclass::someMethod(){ 
AnotherClass someobj2; //option 2
}

最佳答案

someobj1 确实是一个成员变量。这意味着 AClass 的每个实例 都包含 AnotherClass 的一个名为 someobj1 的实例,它与它是其中一部分的实例。

someobj2someMethod 函数的局部变量。它将在所述函数结束时被销毁。

它们都不是全局的。也许您将它们与 static 成员变量混合在一起,它们具有静态生命周期(在 main 开始之前构造,在结束之后销毁),就像全局变量一样(但它们是不完全是全局的,因为它们包含在类的范围内。

这里有一个愚蠢的例子来说明这一点:

CatBasket gCatBasket; // All cats in the house share the same basket (global)

class Cat {
Tail _tail; // The tail is part of the cat (member)
Human *_owner; // The cat remembers his owner for his whole life (member)

void meow() {
MeowSound sound; // The "meow" sound only exists while the cat is meowing. (local)
sound.setAmplitude(17.0f);
sound.setPurr(true);

sound.play();
}

static bool _beACat;
};

bool Cat::_beACat = true; // Everybody wants to be a cat (static)

关于c++ - 将对象创建为私有(private)成员变量与在成员函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154770/

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