文档章节

static和const用法

种地瓜
 种地瓜
发布于 2015/09/15 12:04
字数 572
阅读 10
收藏 0

    static和const的用法,经常在面试的时候会被问到:

    找了一些帖子,供学习分享,其中一个链接:

    http://blog.chinaunix.net/uid-14607221-id-2794632.html


    static关键字至少有下列n个作用:(要想到变量,函数形参,返回值等方面)
  (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
  (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
  (3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
  (4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
  (5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

  const关键字至少有下列n个作用:(要想到变量,函数形参,返回值等方面)

  (1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
  (2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
  (3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
  (4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
  (5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。例如:

const classA operator*(const classA& a1,const classA& a2);


  operator*的返回结果必须是一个const对象。如果不是,这样的变态代码也不会编译出错:

classA a, b, c;
(a * b) = c; // 对a*b的结果赋值


© 著作权归作者所有

上一篇: 堆和栈的区别
种地瓜
粉丝 10
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问
static_cast, dynamic_cast, const_cast探讨

一、隐式类型转换 二、显示类型转换 staticcast 用法:staticcast < type-id > ( expression ) 说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 需...

yintao
2014/05/08
32
0
C++的类型转换

目录 前言 在看到C++中static_cast等东东的时候,不知道这个代表什么,然后就对C++产生了一点惧怕,原来还以为是模板里的东西,所以把模板学了学,后来才发现是类型转换用的。 学习!分享!感...

simonforfuture
2018/01/04
0
0
C++运算符转换

在C语言中,如果要转换类型转换,使用强制类型转换的方法 (T)expression 但是在C++中提供了类型转换符,分别是static_cast,dynamic_cast,reinterpret_cast,const_cast这四个类型转化符,下...

晨曦之光
2012/04/13
144
0
static_cast, dynamic_cast, reinpreter_cast, const_cast的用法

转自]《c++强制转化》 http://topic.csdn.net/t/20041127/15/3593843.html 1. static_cast 用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运......

长平狐
2012/09/03
417
0
static_cast reinterpret_cast

标准C++的类型转换符:staticcast、dynamiccast、reinterpretcast和 constcast(转载) C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Fun...

nkbai
2009/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
935
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部