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