C++面试常见关键字总结

1.static

static是一种关键字,通常用来修饰局部变量、全局变量/函数、类内成员变量/函数这几种,使其变成静态。

1.1对局部变量修饰

使其生命周期不再是当前作用域,而是整个程序的生命周期,函数内局部变量储存在栈中,使用static修饰后储存在静态储存区。

1.2对全局变量修饰

使全局变量只能在本文件中被使用、不能被其他文件访问。

1.3对类内成员变量修饰

被static修饰的类内成员变量需要在类外进行初始化,且使其所属变为类,而不是任何一个对象或函数,初始化时需标明所属类。

1.4对类内成员函数修饰

与类内成员变量被修饰差不多,也是使其所属变为类,不过静态成员函数只能访问静态成员变量,不能访问非静态成员变量或函数,因为没有this指针。

2.extern

2.1extern “C”

//标明fun函数用C语言风格去编译和链接
extern "C" void fun();

2.2 extern + 变量/函数

一般只在头文件中声明,且不进行定义,因为若是有多个文件包含头文件,则会连接报错

//标明该变量或函数可以在本文件或者其他文件中使用
//test.h
extern int g_a;

3.const

3.1 const修饰变量

const修饰的变量需要在声明时初始化,因为后面就无法再修改了

	int a = 10;
	const int b = 20;//b的值不能被修改
	const int * p = &a;//不能修改p指向的a的值
	int * const q = &a;//不能修改q所指向的,也就是q只能指向a

3.2 const在函数中使用

修饰函数返回值:

如果修饰的返回值是临时变量,则无意义

修饰的是指针或引用类型的返回值,则返回值只能被赋值给被const修饰的同类型指针或引用
在这里插入图片描述
在这里插入图片描述

修饰函数参数:

void func(const int a);
// 传递的参数在函数中不可改变

void func(const char* a);
// 参数所指向的内容为常量不可变

void func(const T& a);
// 传的引用不能被修改

3.3 const在类中使用

修饰成员变量:

class test
{
public:
	const int val = 10;//成员常量不能被修改
	test(int a = 20) :val(a){};//只能在初始化列表中赋值
};
int main()
{
	int p = 50;
	test test1(p);
	cout << test1.val;//50
	return 0;
}

修饰成员函数:

在这里插入图片描述

1、const对象只能访问const成员函数,非const对象可以访问任意成员函数

2、const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。

3、mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改

4、const关键字不能与static关键字同时使用,因为static关键字修饰静态成员函数,静态成员函数不含有this指针,即不能实例化,const成员函数必须具体到某一实例。

在这里插入图片描述

3.4 将const强制转为非const

采用const_cast 进行类型转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值