gpt4 book ai didi

C++ - 为什么可以在复制构造函数中直接访问传递的对象的私有(private)变量?

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:29 25 4
gpt4 key购买 nike

<分区>

class IntVec
{
public:
IntVec();
IntVec(int siz);
IntVec(const IntVec& temp);

~IntVec();

private:
int* arr;

int size;
};

IntVec::IntVec()
{
size = 2;

arr = new int[size];
}

IntVec::IntVec(int siz)
{
size = siz;

arr = new int[size];
}

IntVec::IntVec(const IntVec& temp)
{
size = temp.size; // Why does this not cause an error? size is a private variable of object temp.

arr = new int[size];

for (int i = 0; i < size; i++)
{
arr[i] = temp.arr[i]; // Why doesn't this cause an error? arr is a private variable of object temp.
}
}

IntVec::~IntVec()
{
delete[] arr;
}

int main()
{
IntVec test1(2);

cout << test1.size; // Causes error (expected), since size is private.
}

我不清楚为什么我可以在复制构造函数中访问 temp 的 size 和 arr 变量,因为它们是私有(private)变量。为什么我在 main() 中出错是有道理的,但我不确定为什么我在复制构造函数中没有出错。

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