C++学习日记 7.29

来源:互联网 发布:php 字节流 编辑:程序博客网 时间:2024/06/05 07:29

 今天做试卷的时候,发现我对于友元和继承有点混了。复习一下,对比总结一下

出现位置以及关键字:

友元只能在类的内部声明  friend XX(XX可以是类,也可以是函数),继承是在类声明的开头  class A:public B(A是派生类,B是基类)。

 

友元的声明是在“母体”中,而继承的声明是在“子体”中。

 

作为友元的“子体”,是可以访问“母体”的一切成员的,包括为派生类准备的protected。而派生类只能访问基类的public和protected,依旧访问不了私有的private。

 

友元是不可以继承的。友元只是为“访问”而做的方便之门。

 

发现一门语言的笔试真的挺变态的。作为一门编程语言,能够做出程序才是真的。为什么要咬文嚼字的去用笔答呢。做了一份试卷,还没及格,我郁闷了,尤其改错题,要么就发现N个错误(试卷可能印错了),要么就是我用一个方法改没问题,但答案是另外一种改法。反正挺郁闷的。明天再好好深看看继承部分。

 

今天白天看了看static关键字,看了好几个教材,都有很多不能理解的地方。最后晚上发现,百度百科的居然更加全面,汗一下。

 

通常一个程序分几个区域 1.全局数据区,2 代码区,3 堆区,4 栈区。 由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区,全局变量和static动态变量存放在全局数据区。new会有对应的delete来释放内存,函数内部的自动变量会在函数结束后释放内存。 由此我们可以想到一个问题。当我们在函数,或者类调用结束后,不想释放内存,那该怎么办呢。作用1,就用static来定义。这样就避免了去释放它。其实原理就是static定义的数据存放在全局数据区。

还有几个作用

2,应用在全局变量,普通的全局变量是跨越多个文件的。加了static以后,就可以只在当前文件中有用,其他的文件不可访问,从而可以再定义相同名字的变量。而且静态全局变量未初始化的情况下默认为0

 

静态变量和普通变量的访问权限是一样的。只不过存放的内存位置不同。不要被静态全局变量这个词诱导。

 

  类中的静态数据成员

类中的静态数据成员也很有意思。它并不数据任何一个类的对象。它只属于类,可以看成是类本身的一个属性。所以不可以在类的内部初始化。用“static 类型 名字”声明,然后在类的外面去初始化。 “数据类型 类名::名字 =数值”。调用有两种方法。 对象名.名字 或者 类名::名字。

  类中的静态成员函数

这个也挺爽。他与普通成员函数有一个很大的不同,那就是没有this指针。还是那个道理,他只属于类,不属于任何对象。所以说,它不能有this指针指向当前对象。因为这个原因,省去了this指针,所以节省了系统开销,可以曾加程序效率。既然它不属于任何对象,由此,我们又能得出一个结论。 静态成员函数不可以访问非静态数据成员和非静态成员函数!他只能访问静态成员和函数 !

 

原创粉丝点击