学习笔记2-C++-const static 关键词的用法

C++基础 const,static关键词

1. const可以修饰变量,指针,函数参数

在全局定义常量上,const要比#define好。
//const可以修饰变量,指针,函数参数
const double con_pi=3.141592657;//定义一个全局常量,有类型,编译器可以进行类型安全检查
#define de_pi 3.1415//宏定义一个常量,没有数据类型,没有类型安全检查,只是简单字符替换
#include
using namespace std;
extern const int b=2;//定义全局常变量
char *strcpy(char *s1,const char *s2);//传递过来的参数s2在函数内不可改变
//const还可以修饰类成员变量和类成员函数
class A
{
	public:
	const int a=3;//成员常量,不能重新赋值,不能修改
	int b,c,d;
	void func(int) const;//常成员函数,不能修改对象的成员变量,也不能调用非const成员函数
	A(int x):a(x){};//只能在初始化列表中赋值
	A(int m,int n)
	{
		//a=m;不能在构造函数里面重新赋值
		c=m;
		b=n;
	}
};
int main()
{
	int const a=1;//定义整形常变量
	char ch[20]="abc";
	char bh[20]="abc";
	const char *p1=ch;//p1指针指向的内容(字符数组ch[])是常量
	char* const p2=bh;//p2指针本身是常量,不能给它重新赋值
	p2[3]='d';//可以对字符数组p2[]做修改
	p1=bh;//可以改变p1指针的指向
	A a1(5,6);
	cout<


 
   

2. static可以定义静态全局变量,静态局部变量,静态函数

静态变量只初始化一次。
静态全局变量只是在定义它的源文件中有效,只能被同一源文件中的函数调用。
静态局部变量只在定义它的作用域内有效。
静态函数只能被定义它的源文件中的函数调用。
注意:
通常情况下,静态成员函数不能访问非静态成员变量。

你可能感兴趣的:(c++)