static const extern 关键字

static用法

  1. static成员变量
class Task {
public:
private:
	static unsigned n;//static数据成员不会影响该类及其对象的sizeof
};
unsigned Task::n = 0;
  1. 类成员函数
    static成员函数只能访问static成员,非static都可访问
  2. 函数体内的static变量
    作用范围为函数体,内存只被分配一次。
  3. 模块内的static变量与static函数只能被模块内的函数访问或调用,不能被模块外的其他函数访问。

const关键字用法

class C {
	public:
		void set (const string &n) { name = n; }
		const string& get() const { return name; }
	private:
		string name;
};
  1. 定义常量:const int i = 0;需在定义时初始化。
  2. cosnt修饰形参:const string &n表明是一个输入参数,函数内部不能改变其值。
  3. cosnt成员函数(只读函数):位于参数与函数体间的const表示该函数不会改变类的任何数据成员的值。
  4. 返回类型前的const:const string& get() const { return name; }此处的const表明谁也不能通过这个引用来修改数据成员name的值。

另: 1. const成员函数仅能调用其他const成员函数
2. const对象只能调用const成员函数和非const类型析构函数。
3. 非const对象可以调用const类型函数。

extern关键字用法

  1. extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
    在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或其他模块中使用,记住它是一个声明不是定义!也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会在连接时从模块A生成的目标代码中找到此函数。

  2. 此外extern也可用来进行链接指定。
    当它与"C"一起连用时,如: extern “C” void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的

注:

  1. 只在头文件中做声明

  2. extern 和 static
    (1) extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量.
    (2) static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面.

  3. extern 和const
    C++中const修饰的全局常量据有跟static相同的特性,即它们只能作用于本编译模块中,但是const可以与extern连用来声明该常量可以作用于其他编译模块中

http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值