IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++-基础部分-类与对象-小总结 -> 正文阅读

[C++知识库]c++-基础部分-类与对象-小总结

清华大学出版社《c++程序设计》(第三版)中简单总结的一些知识点

  • 定义类时只能在类中声明数据成员,而不能对数据成员进行初始化。
  • 成员函数一般最好放在外面(除了极短的函数,不需要函数原型,函数名前也不需要类名和作用域运算符::)
  • 程序通过空间的共享来实现数据的交换:
    • 全局变量,但破坏了面向对象程序的封装特性
    • 静态数据成员 static,类的静态数据成员可以被该类的所有对象共享
  • 类的静态成员包括静态数据成员和静态成员函数,即使没有创建对象,它也已经存在且可以被访问,通过类名加作用域运算符。
    • 静态数据成员必须在定义类的时候初始化,但不能在类里面初始化,只能在类外面进行,比如和成员函数的实现一起
    • 静态成员函数只能访问类的静态成员,不能调用类非静态函数和数据,而非静态函数都可以。
对象的建立Circle one;
Circle array[10];
Circle *ptr = &one;
Circle &o = one
Circle *pone,*pten;
pone = new Circle;
pten = new Circle[10];
  • 防止类的头文件多次被源文件包含而导致,类多次被定义而出现重复定义,因而在定义类时加上预处理指令:
    #if !defined CIRCLE_H
    #define CIRCLE_H
    #endif

构造函数:

  • 定义构造函数前不能有返回类型存在,比如 void Circle()就是错误的
  • 构造函数执行:
    1. 全局对象:定义在所有函数外面的对象,具有文件作用域
    2. 局部动态对象:定义在程序块内,具有块作用域
    3. 局部静态对象:定义在程序块内,具有块作用域,static关键字,只在第一次被建立一次,存在于整个生命周期
    4. 动态创建的对象(用new运算符创建)
  • 构造函数重载:根据声明对象或者创建对象时提供的参数来确定调用哪个函数
  • 默认构造函数:在构造时不提供参数的构造函数
  • 默认构造参数,Circle(double a=5.0,double b=5.0),在声明对象时不提供,也可以提供,也可以提供一部分(参数全是默认参数的构造函数也是默认构造函数)
  • 复制构造函数:根据类的某个对象复制出一个完全相同的新的对象的构造函数
    1. 例如定义带参数的构造函数Circle(int a){x=a;}复制构造函数Circle(Circle &C){x=c.x;},
    2. 使用时例如:Circle a(8);Circle b(a);
    3. 如果没有定义,编译时也会自动加入完成数据成员复制的构造函数
    4. 如果对象中包含指向动态分配空间的指针数据成员时要注意,不能简单的赋值,要为当前新建对象的指针数据成员分配新空间。。。。什么时候找个案例(黑马,P28创建自己的异常类那里,catch对象那里采用了复制构造,结果新老对象数据指针指向 同一个地方,当执行折构函数时导致出错)(或者catch对象的引用,可以避免调用构造函数)

折构函数:

  • 如果类的对象包含动态分配的空间时,如之前定义的 Stack类,必须使用折构函数,否则没有必要
  • 不同类型的对象折构函数的执行时机:
    1. 全局对象,在所有程序执行完后被撤销销,在main函数最后一条语句或者程序执行exit语句后,折构函数被执行。
    2. 局部动态对象,在退出该对象作用域时撤销,折构函数在退出该程序块时被执行。但以exit,abort终止执行,则折构函数不被被执行
    3. 局部静态对象,在所有程序执行完或执行exit时折构函数被执行,且在全局对象折构函数执行前被执行。在退出在退出该程序块前以abort终止执行,则折构函数不被被执行。
    4. 动态创建的对象(用new)必须动态执行,在delete操作时执行

类和对象的使用:

  • 类的复合:定义一个类时,把其他类的对象作为自己的成员 ,列如:

圆类构造函数的声明:Circle(double a=5.0,double b=5.0,double c=5.0);
圆柱类构造函数的声明:Column(double a=5.0,double b=5.0,double c=5.0,double c);
数据成员包含Circle circle; 定义构造函数时:
Column::column(double a=5.0,double b=5.0,double c=5.0,double c) : circle(a,b,c)
:后面接成员对象名,可以有多个对象,列出参数(对象构造函数的显式调用)不需要参数(隐式调用)
成员对象会在包含他的对象创建之前被创建
撤销时执行折构函数时也会自动调用成员对象的折构函数
Column中的成员函数无法访问Circle其私有属性

  • this指针:每个对象维护的指向自身的指针(当一个对象调用成员函数的时候,为了保证它当前要操作的数据时这个对象的数据成员,而不会访问到其对象)类型是Circle *const,每个成员函数都会获得这个隐含参数。
    • 成员函数不仅可以用数据名data去访问,也可以通过this->data去访问
    • this指针指向对象自身的首地址,指针复引用this可以帮助对象获取对象自身,(如果一个类的成员函数返回值是this,程序就可以用这个返回值去调用另外一个成员函数)定义函数返回类型Circle &
    • 静态成员函数不维护this指针,对象调用静态成员函数不传递this指针,因此静态成员函数不能访问非静态数据成员,同理非静态成员函数也不能调用静态成员函数。
  • const
    • 声明const对象,const Circle baseCircle(0.,0,1);
      const对象不能调用非const成员函数
      const对象的初始化在构造函数中进行,初始化后不允许被修改
    • 类的const成员函数不允许修改定义于类中的数据成员 void Circle::print() const
      类的const成员函数不允许调用非const成员函数
    • const数据成员在构造函数中初始化,但不能通过赋值进行。const double r;
      在构造函数的头部中给出,由冒号引出const数据成员和相应的初始化值
      Circle::Circle(double a,double b,double c):r? //引用也是一样,必须这样显式的初始化
    • 总之,const成员函数不能修改对象,const对象不允许被任何程序修改
    • 非const对象,非const函数可以随意。
  • 友元函数
    一个类的函数是该类的外部函数,他有权访问类的所有成员。声明方法:在类的定义中加入该函数的函数原型,并将关键字friend放到函数原型前面。
    (建议不用友元,除非有极大的便利)friend void aa(int a)
  • 友元类
    类名前加friend ,友元类的声明是单方面的,不可传递的,反着来不行。

封面

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:20:07  更:2021-10-11 17:22:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:31:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码