Skip to content

修改 cpp_lifetime.md 中的措辞与问题 - #72

Open
Mq-b wants to merge 1 commit into
parallel101:mainfrom
Mq-b:Mq-b-dev
Open

修改 cpp_lifetime.md 中的措辞与问题#72
Mq-b wants to merge 1 commit into
parallel101:mainfrom
Mq-b:Mq-b-dev

Conversation

@Mq-b

@Mq-b Mq-b commented Dec 20, 2024

Copy link
Copy Markdown
Contributor
Class *p = new Class;  // *p 是动态存储周期
delete p;              // 释放动态分配的内存

delete p; 的注释仅为“释放动态分配的内存”不合适,根据上下文,此处还应强调调用析构函数。

特别注意,p 依然是“栈上变量”,p 指向的 *p 才是“堆上变量”!
用律师语再说一遍:p 是自动存储周期,p 指向的 *p 才是动态存储周期!(白律师最满意的一集)

律师的话并不够准确。且我认为之前的描述也存在一些问题。

我认为关键在于强调 p 是什么,*p 是什么,以及说明常用词汇“指向”到底代指着什么。

另外有必要强调 *p 返回的是指针所指向对象的引用,我认为大多数开发者事实上并不清楚这一点。

内建的取址符(*)的操作数必须是指向对象或指向函数的指针,其结果是一个 lvalue,引用的是操作数所指向的对象或函数。

T& operator*(T*);

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants