[英]Referencing const objects/pointers in C++
对于 C++ 中引用的处理方式,我不太了解:
B objB = B(); // Regular B object
const B &refConstObjB = objB; // Reference to const B object
B* ptrB = new B(); // Regular pointer to B
B* const &refPtrConstB = ptrB; // Reference to const pointer to B
以上所有编译都很好。 但是以下没有:
const B* &refConstPtrB = ptrB; // Reference to pointer to const B
考虑到 object 和指针都被声明为非常量,为什么我可以将 object 引用为 const object,但不能对指针做同样的事情?
请注意: const
引用并不意味着const
object。
它只是表示 object 通过该引用是只读的。 因此,无论 object 是否为const
,您都可以拥有一个只读引用或指向它的指针。
现在,如果您提到的内容被允许,您可以说refConstPtrB = pointer_to_some_const_B
,然后通过ptrB
改变object ,这将违反指针目标的const
-ness。
这个错误的原因是你可以用它在类型系统中打一个洞。 考虑以下代码:
const B dontChangeMe;
B* ptrB = new B();
/* This step is NOT legal. */
const B* &refConstPtrB = ptrB;
/* Uh oh! I now have ptrB pointing at dontChangeMe! */
refConstPtrB = &dontChangeMe;
因此,您不能完成您标记的作业。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.