From c7a0516aa139d6ccadb91dd0b254c4dcdebf0a66 Mon Sep 17 00:00:00 2001 From: Xingyu Zhou <99876487+CruxZhou@users.noreply.github.com> Date: Mon, 11 May 2026 21:51:39 +0800 Subject: [PATCH] =?UTF-8?q?InterviewGuide=20=E5=8B=98=E8=AF=AF=20-=20C++?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=AF=AD=E6=B3=95=2024=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改关于const成员和static成员能否类内初始化的描述 --- docs/notes/03-hunting_job/02-interview/01-01-02-basic.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/notes/03-hunting_job/02-interview/01-01-02-basic.md b/docs/notes/03-hunting_job/02-interview/01-01-02-basic.md index ae5fe9d68..99285faf8 100644 --- a/docs/notes/03-hunting_job/02-interview/01-01-02-basic.md +++ b/docs/notes/03-hunting_job/02-interview/01-01-02-basic.md @@ -131,7 +131,7 @@ comment: false - 默认初始化为0,包括未初始化的全局静态变量与局部静态变量,都存在全局未初始化区 - 静态变量在函数内定义,始终存在,且只进行一次初始化,具有记忆性,其作用范围与局部变量相同,函数退出后仍然存在,但不能使用 - 考虑类的情况 - - static成员变量:只与类关联,不与类的对象关联。定义时要分配空间,不能在类声明中初始化,必须在类定义体外部初始化,初始化时不需要标示为static;可以被非static成员函数任意访问。 + - static成员变量:只与类关联,不与类的对象关联。定义时要分配空间,不能在类声明中初始化,必须在类定义体外部初始化(但const修饰符修饰的static变量可以类内初始化,使用inline修饰的也可以类内初始化),初始化时不需要标示为static;可以被非static成员函数任意访问。 - static成员函数:不具有this指针,无法访问类对象的非static成员变量和非static成员函数;**不能被声明为const、虚函数和volatile**;可以被非static成员函数任意访问 **const** @@ -143,7 +143,7 @@ comment: false - const形参可以接收const和非const类型的实参,例如// i 可以是 int 型或者 const int 型void fun(const int& i){ //...} - 考虑类的情况 - - const成员变量:不能在类定义外部初始化,只能通过构造函数初始化列表进行初始化,并且必须有构造函数;不同类对其const数据成员的值可以不同,所以不能在类中声明时初始化 + - const成员变量:不能在类定义外部初始化,只能通过构造函数初始化列表进行初始化,并且必须有构造函数;不同类对其const数据成员的值可以不同,C++11后const成员可以有默认的初始化器,如果构造函数没有显式初始化该变量,就使用此默认值,该默认值可被构造函数初始化列表传入的值覆盖。 - const成员函数:const对象不可以调用非const成员函数;非const对象都可以调用;不可以改变非mutable(用该关键字声明的变量可以在const成员函数中被修改)数据的值 补充一点const相关:const修饰变量是也与static有一样的隐藏作用。只能在该文件中使用,其他文件不可以引用声明使用。