C++编程思想(2nd卷一):名字控制

在C和C++中,static都有两种基本的含义,并且这两种含义经常是互相冲突的:
1.在固定的地址上进行存储分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的。这也是静态存储的概念。
2.对一个特定的编译单元来说是局部的。这样,static控制名字的可见性,所以这个名字在这个单元或类之外是不可见的。这也描述了连接的概念,它决定连接器将看到哪些名字。
零赋值只对内部类型有效,用户自定义类型必须用构造函数来初始化。
在文件作用域内,一个被声明为static的对象或函数的名字对翻译单元来说是局部于该单元的。这些名字有内部连接。这意味着可以在其他的翻译单元中使用同样的名字,而不会发生名字冲突。
用可见性术语来讲,static的反义是extern,它明确地声明了这个名字对所有的翻译单元都是可见的。

namespace的特征:
1.namespace只能在全局范围内定义,但它们之间可以互相嵌套。
2.在namespace定义的结尾,右花括号的后面不必跟一个分号。
3.一个namespace可以在多个头文件中用一个表示符来定义,就好像重复定义一个类一样。
4.一个namespace的名字可以用另一个名字来作它的别名,这样就不必敲打哪些开发商提供的冗长的名字了。
5.不能像类那样取创建一个名字空间的实例。

在一个名字空间中引用一个名字可以采用三种方法:
1.用作用域运算符(::)。
2.用using指令把所有名字引入到名字空间中(using namespace 空间名)。
3.用using声明一次性引用名字。

因为静态成员函数没有this指针,所以它既不能访问非静态的数据成员,也不能调用非静态的成员函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值