c++学习笔记1之面向对象练习及static关键字总结

static 成员
1,static 成员变量实现了同类对象间信息共享。
2,static 成员类外存储,求类大小,并不包含在内。
3,static 成员是命名空间属于类的全局变量,存储在 data 区。
4,static 成员只能类外初始化
5,可以通过类名访问(无对象生成时亦可),也可以通过对象访问。
静态成员函数
1,静态成员函数的意义,不在于信息共享,数据沟通,而在于管理静态数据成员, 完
成对静态数据成员的封装。
2,静态成员函数只能访问静态数据成员。 原因:非静态成员函数,在调用时this 指
针被当作参数传进。而静态成员函数属于类,而不属于对象,没有 this 指针
3.static静态函数调用时可以不写类名

静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

static 方法或变量限制了作用域,对别的.c文件隐藏。如果不加static,其他的.c文件也可以外部调用到。

利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。

int fun(){
static int count = 10; //在第一次进入这个函数的时候,变量a被初始化为10!并接着自减1,以后每次进入该函数,a
return count–; //就不会被再次初始化了,仅进行自减1的操作;在static发明前,要达到同样的功能,则只能使用全局变量:

}////存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化,即全局变量和static变量

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。

面向对象练习
1、设计立方体类,求出立方体的面积和体积

#include
using namespace std;
class cube
{
pravite :
double length,width,height;

public:
void set_nature( double length_,double width_,double height_)
{
length = length_;width = width_;height=height_;
}
double Get_Girth()
{
return lengthwidthheight;
}
double Get_Area()
{
return lengthwidth+lengthheight+widthheight;
}
//在主函数中调用类
int main(void)
{
cube A,B;
A.set_nature(1,2,3);
double h = A.Get_Girth();
double j = A.Get_Area();
cout<<h<<j;

return 0;
}

//问题 什么情况下需要new,什么情况下不需要/? 同样的 什么情况下需要deleta?什么情况下需要写析构函数/?

扫描二维码关注公众号,回复: 9603391 查看本文章

答:被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来.

}

发布了29 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42542969/article/details/88812956