我了解到我永远无法访问私有变量,只能使用类中的 get 函数。但是为什么我可以在复制构造函数中访问它呢?
Example:
Field::Field(const Field& f)
{
pFirst = new T[f.capacity()];
pLast = pFirst + (f.pLast - f.pFirst);
pEnd = pFirst + (f.pEnd - f.pFirst);
std::copy(f.pFirst, f.pLast, pFirst);
}
我的宣言:
private:
T *pFirst,*pLast,*pEnd;
访问修饰符起作用班级水平,而不是在对象级别.
也就是说,同一类的两个对象可以访问彼此的私有数据。
Why:
主要是因为效率。检查是否存在不可忽略的运行时开销this == other
每次您访问other.x
如果访问修饰符在对象级别起作用,则必须这样做。
如果您从范围界定的角度考虑,这在语义上也是合乎逻辑的:“修改私有变量时我需要记住代码的多大部分?” – 您需要记住整个类的代码,这与运行时存在哪些对象是正交的。
And it's incredibly convenient when writing copy constructors and assignment operators.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)