C++面向对象学习笔记(二)

废话

发现写博客还挺好玩。写出来会强迫我思考一些学的时候没有去思考的问题。朋友们可以自己去试试,把自己在学的东西总结一下写出来。

正文

1、静态(static)

(1)静态变量

静态变量储存的位置不同于普通变量。无论是全局静态变量还是局部静态变量,都会储存在程序的静态储存区,整个程序运行期间都会存在。全局静态变量只能在声明它的文件内使用。

局部静态变量的作用域还是局部作用域,当离开作用域后静态变量不可访问,但没有销毁。如果再次进入作用域,可以再次访问静态变量 ,并且值会保持上一次离开时的值。

(2)静态函数

这里指不是类成员函数的静态函数。这种静态函数唯一的区别就是只在当前文件可以调用,在其他文件不能调用。

(3)类的静态成员变量

类的静态成员变量是该类所有对象共用一个,而不是每个类拥有一个。

(4)类的静态成员函数

类的静态成员函数不能使用类中非静态的成员变量或函数,因为静态成员函数由所有实例运行结果应该都一样,不能受非静态因素的干扰。因为静态函数的结果不被类实例影响,所以引用静态成员函数可以不需要通过实例,直接通过类名引用。

2、单例模式

单例是很多语言都有的设计模式。在单例模式中,指定类只能拥有一个实例。因为实例是唯一的,所以通过类名就可以在全局范围内访问该实例。

单例模式的实现核心是类拥有一个静态的成员变量储存该唯一实例。由于静态变量的特点,无法生成第二个实例,并且可以在全局访问。

3、复合和继承关系中的构造与析构

在两个类的复合关系中,假设A类中拥有一个B类的实例。在创建A实例时,A会先调用B的默认构造函数 (无参数的构造函数),然后调用自己的构造函数。在摧毁A实例时,A会先调用自己的析构函数,然后调用B的析构函数。

在两个类的继承关系中,假设A类的父类为B类。在创建A实例时,A会先调用B的默认构造函数,然后调用自己的构造函数。在摧毁A实例时,A会先调用自己的析构函数,然后调用B的析构函数。

一个更复杂的案例,假设A类的父类为B类,A类内复合了类B。在创建时,A会先调用B的构造函数,然后调用C的构造函数,最后执行自己的构造函数。析构时反过来。

4、|,||以及&,&&的区别

有时看别人代码时会发现,判断逻辑或时,有的人使用|,有的人使用||。这两个运算符的区别在于,|是位运算的运算符,作用在布尔变量上,会正确地返回两者的或值。||是逻辑运算符,在运行时,如果左边的表达式已经为真,逻辑的结果已经确定,右边的表达式就不会被运行了。如果希望右边的表达式一定会运行,可以使用|作为逻辑运算符。

&和&&也是一样的道理,如果&&的左边返回了否,右边就不会执行了。

废话

侯捷老师的C++面向对象上看完了,大致学到这些新东西,有一些太细微的没有写。总体而言收获还是挺多的,接下来会学C++标准库。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/napoleon0/p/14506296.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程

4775 0元 限免