| |
|
开发:
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++面向对象高级编程(上) |
基于对象的程序设计不带有指针成员变量的类(以复数类Complex为例)头文件的结构头文件complex.h的结构如下,主要有4部分:
访问级别
函数设计内联函数
构造函数与其他语言类似,C++的构造函数也可以有默认实参.C++构造函数的特殊之处在于列表初始化(initialization list).
常量成员函数若成员函数中不改变成员变量,应加以 const 修饰 参数的值传递和引用传递
返回值的值传递和引用传递
若函数的返回值是临时变量,则只能通过值传递返回. 友元友元函数不受访问级别的控制,可以自由访问对象的所有成员.
操作符重载在C++中的操作符重载有两种形式:
为便于调用该类的用户使用,不同的操作符使用不同的方式进行重载。 在类内声明 public 函数重载 +=输出参数类型为 complex& ,这是为了支持将多个 += 操作符串联起来.若返回参数类型设为 void ,也支持形如 c2+=c1 的运算,但不支持形如 c3+=c2+=c1 的运算. 在类外声明或函数重载+考虑到+操作符有三种可能的用法如下:
因为重载操作符的成员函数是作用在左操作数上的,若使用类内声明public函数重载操作符的方法,就不能支持第3种用法了.因此使用在类外声明函数重载+运算符.
在类外声明函数重载<<与重载 + 的考虑方法类似, << 操作符通常的使用方式是 cout<<c1 而非 c1<<cout ,因此不能使用成员函数重载 << 运算符. 虑到形如 cout<<c1<<c2<<c3 的级联用法,重载函数的返回值为 ostream& 而非 void. 总结:在编写类的时候应该注意的5件事在编写类的时候应该注意的5件事,通过这5件事可以看出你写的代码是否大气:
带有指针成员变量的类——以字符串类String为例
3个特殊函数:拷贝构造函数、拷贝赋值函数和析构函数对于不带有指针的类,这3个函数可以使用编译器默认为我们生成的版本;但是编写带有指针的类时就有必要定义这3个特殊函数. 构造函数和析构函数构造函数和析构函数中执行数据的深拷贝和释放. 值得注意的是使用delete[]操作符释放数组内存,若直接使用delete操作符释放数组内存虽然能够通过编译,但有可能产生内存泄漏. 拷贝构造函数和拷贝赋值函数注意拷贝3调用的是拷贝构造函数。
拷贝构造函数的实现较为简单,直接调用友元对象的数据指针进行拷贝即可.
堆栈与内存管理https://blog.csdn.net/jialong_chen/article/details/115421050 new和delete过程中的内存分配
数组中的元素是连续的,数组头部4个字节记录了数组长度:
根据数组在内存中的状态,自然可以理解为什么 new[] 和 delete[] 应该配对使用了: delete 操作符仅会调用一次析构函数,而 delete[] 操作符依次对每个元素调用析构函数.对于 String 这样带有指针的类,若将 delete[] 误用为 delete 会引起内存泄漏. static成员https://zhuanlan.zhihu.com/p/37439983 静态成员变量:类的所有对象共有。 面向对象(Object Oriented)的程序设计——类之间的关系类之间的关系有复合(composition)、委托(aggregation)和继承(extension)3种. 类之间的关系复合(composition)复合表示一种has-a的关系,STL中queue的实现就使用了复合关系.这种结构也被称为adapter模式. 委托(aggregation;composition by reference)
继承(extension)继承表示一种is-a的关系,STL中_List_node的实现就使用了继承关系. 虚函数成员函数有3种: 非虚函数、虚函数和纯虚函数
面向对象设计范例使用委托+继承实现Observer模式
使用委托+继承实现Composite模式使用Composite模式实现多态,类结构图如下 使用委托+继承实现Prototype模式参考 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:16:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |