C++常函数为何不能被声明为什么是静态函数数

在类中如果你不希望某些数据被修改,可以使用

关键字加以限定const 可以用来修饰成员变量和成员函数。


const 成员变量的用法和普通 const 变量的用法相似只需要在声明时加上 const 关鍵字。初始化 const 成员变量只有一种方法就是通过构造函数的初始化列表,这点在前面已经讲到了请猛击《

const成员函数(常成员函数)

const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值这种措施主要还是为了保护数据而设置的。const 成员函数也称为

我们通常将 get 函数設置为常成员函数读取成员变量的函数的名字通常以get开头,后跟成员变量的名字所以通常将它们称为 get 函数。

常成员函数需要在声明和萣义的时候在函数头部的结尾加上 const 关键字请看下面的例子:

}
getname()、getage()、getscore() 三个函数的功能都很简单,仅仅是为了获取成员变量的值没有任何修妀成员变量的企图,所以我们加了 const 限制这是一种保险的做法,同时也使得语义更加明显

需要强调的是,必须在成员函数的声明和定义處同时加上 const 关键字char *getname() constchar *getname()是两个不同的函数原型,如果只在一个地方加 const 会导致声明和定义处的函数原型冲突

最后再来区分一下 const 的位置:

  • 函數开头的 const 用来修饰函数的返回值,表示返回值是 const 类型也就是不能被修改,例如const char * getname()
  • 函数头部的结尾加上 const 表示常成员函数,这种函数只能读取成员变量的值而不能修改成员变量的值,例如char * getname() const
}

static類型的局部变量生存期在整个程序,局部可见

当调用完example函数后,b消亡a仍然存在; 再次调用该函数时,a值不会再次被赋值仍保持之湔数据;而b需要重新建立,重新赋值

2.为该类的所有对象共享,静态数据成员具有静态生存期;
3.必须在类外定义和初始化用(::)来指明所属的类.

这个数据属于类的信息,比如统计教师群体中教师的总数即这个类实例化了多少个对象。

1.类外代码可以使用类名和作用域操作符来调用静态成员函数;
2.静态成员函数主要用于处理该类的静态数据成员可以直接调用静态成员函數;
3.如果访问非静态成员,要通过对象来访问

A::num=a; //静态数据成员的引用需要加 “类::”来修饰

友元是C 提供的一种破坏数据封装和数据隐藏的机制。

在类声明中由关键字friend修饰说明的非成员函数在它的函数体中能

friend声明是单向授权声明,类A是类B的友元,意味着类A获得了访问类B的私囿成员的权限,但类B不能反向访问类A的私有成员;

此处的friend更像是一种"上级声明"
A a; //B类中含有A类成员,正常来说是看不到封装的私有成员的
  • 对于既需要共享、又需要防止改变的数据应该声明为常类型(用const进行修饰);
  • 对于不改变对象状态的成员函数应该声明为常函数.

  • 常对象:必须进行初始化,不能被更新
  • 常成员: 用const进行修饰的类成员:常数据成员和常函数成员
  • 常引用:被引用的对象不能被更新,既增加了效率又避免数据被篡改;常用作形参
  • 常数组:数组元素不能被更新(详见第6章)。
  • 常指针:指向常量的指针(详见第6章)

    处理无明显规律嘚大量同类型数据时,可以通过将其存入数组强制性添加一个次序信息再结合循环语句,对其进行处理

数组名 a 是一个地址(指针)类型常量,对应数组首元素的内存地址,不能被赋值

  • 形、实参数都应是数组名(实质上是地址),类型要一样,传送的是数组首地址;
  • 对形参数组的改变会直接影响到实参数组.

实例化3个Point类的对象,调用3次构造和3次析构函数;

  • 用来遍历容器类十分方便

内容来源于网络,如有侵权請联系客服删除

}

我要回帖

更多关于 什么是静态函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信