gpt4 book ai didi

c++ - 我是否需要在类头 C++ 中定义所有私有(private)函数和变量

转载 作者:太空狗 更新时间:2023-10-29 21:33:59 25 4
gpt4 key购买 nike

在 C++ 类中,我应该将私有(private)函数和变量放在类头定义的私有(private)部分,还是放在类源文件中?为什么?

例如:

// Header
class MyClass {
public:
void doSomething();
private:
int a = 0;
}

// Source
void MyClass::doSomething()
{
// Do something with `a`
}

// Header
class MyClass {
public:
void doSomething();
}

// Source
int a = 0;

void MyClass::doSomething()
{
// Do something with `a`
}

我一直认为,在编程时最好使函数/变量的范围尽可能小。那么,将 var a 的范围限制在源文件的范围内不是最好吗?

最佳答案

它们不等价。第一个例子

// Header
class MyClass {
public:
void doSomething();
private:
int a = 0;
}

// Source
void MyClass::doSomething()
{
++a;
cout << a << endl;
}

int main()
{
MyClass x, y;
x.doSomething();
y.doSomething()
}

输出

1
1

第二个例子

// Header
class MyClass {
public:
void doSomething();
}

int a = 0;

// Source
void MyClass::doSomething()
{
++a;
cout << a << endl;
}

int main()
{
MyClass x, y;
x.doSomething();
y.doSomething()
}

输出

1
2

在第一个例子中,a 是一个类变量,所以 xy 有它们自己的 a 拷贝.在第二个例子中只有一个全局变量 a 所以输出是不同的。

关于c++ - 我是否需要在类头 C++ 中定义所有私有(private)函数和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680806/

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