Tag: 说明符

为什么我可以在复制构造函数中访问私有variables?

我已经了解到,我永远不能访问一个私有variables,只能在类中使用get函数。 但是为什么我可以在复制构造函数中访问它? 例: 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;

我应该在C ++中使用exception说明符吗?

在C ++中,您可以指定一个函数可以或不可以通过使用exception说明符来引发exception。 例如: void foo() throw(); // guaranteed not to throw an exception void bar() throw(int); // may throw an exception of type int void baz() throw(…); // may throw an exception of some unspecified type 我怀疑实际使用它们是因为以下原因: 编译器没有以任何严格的方式强制执行exception说明符,所以好处不大。 理想情况下,你想得到一个编译错误。 如果一个函数违反了一个exception说明符,我认为标准的行为是终止程序。 在VS.Net中,它将throw(X)视为throw(…),所以遵守标准并不强烈。 你认为应该使用exception说明符吗? 请回答“是”或“否”,并提供一些理由来certificate您的答案。