Skip to content

Commit

Permalink
[faq] 优化 const 交叉内容的可读性
Browse files Browse the repository at this point in the history
  • Loading branch information
FeignClaims committed Feb 1, 2024
1 parent 3cefea5 commit a37e277
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 14 deletions.
41 changes: 29 additions & 12 deletions docs/faq/basic_concepts/cross/const-pointer.irst
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
:cpp:`const` 不仅可以作用于指针本身, 也可作用于指针指向的对象.
:cpp:`const` 不仅可以作用于指针对象本身, 也可作用于指针指向的对象.

.. code-block:: cpp
.. tabs::

int value = 0;
int const* pointer1 = &value; // 从右往左读, const 作用于 int; 指针指向的 int 对象不可改变
int* const pointer2 = &value; // 从右往左读, const 作用于 *; 指针本身不可改变, 即不可切换指向的对象
.. tab:: 作用于指针对象本身

// 修改指向的 int 对象
*pointer1 = 1; // 错误: 该指针指向的 int 对象不可改变
*pointer2 = 1;
.. code-block:: cpp
:linenos:

// 切换指向的对象
int another_value = 0;
pointer1 = &another_value;
pointer2 = &another_value; // 错误: 该指针不可切换指向的对象
int value = 0;
int* const pointer = &value; // const 向左作用于 *; 指针本身不可改变, 即不可切换指向的对象

/* 修改指向的 int 对象 */
*pointer = 1; // 正确

/* 切换指向的对象 */
int another_value = 0;
pointer = &another_value; // 错误: 该指针不可切换指向的对象

.. tab:: 作用于指针指向的对象

.. code-block:: cpp
:linenos:

int value = 0;
int const* pointer = &value; // const 向左作用于 int; 指针指向的 int 对象不可改变

/* 修改指向的 int 对象 */
*pointer = 1; // 错误: 该指针指向的 int 对象不可改变

/* 切换指向的对象 */
int another_value = 0;
pointer = &another_value; // 正确
4 changes: 2 additions & 2 deletions docs/faq/basic_concepts/cross/const-reference.irst
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
.. code-block:: cpp

int value;
int const& ref1 = value; // 从右往左读, const 作用于 int; 引用的 int 对象不可改变
int& const ref2; // 错误! 引用本身不是对象, 不能用 const 限定它
int const& ref1 = value; // const 向左作用于 int; 引用的 int 对象不可改变
int& const ref2; // 错误: 引用本身不是对象, 不能用 const 限定它

0 comments on commit a37e277

Please sign in to comment.