随笔分类 - C++语言程序设计基础 笔记 学堂在线
摘要:1运算符重载的规则C++ 几乎可以重载全部的运算符,而且只能够重载C++中已经有的。不能重载的运算符:“.”、“.*”、“::”、“?:”重载之后运算符的优先级和结合性都不会改变。 重载的两种形式: 1 重载为类的非静态成员函数; 2 重载为非成员函数。 2双目运算符重载为成员函数 函数类型 ope
阅读全文
摘要:1访问从基类继承的成员当派生类与基类中有相同成员时: 若未特别限定,则通过派生类对象使用的是派生类中的同名成员。 如要通过派生类对象访问基类中被隐藏的同名成员,应使用基类名和作用域操作符(::)来限定。 Derived类对象d的存储结构示意图1 2虚基类需要解决的问题 当派生类从多个基类派生,而这些
阅读全文
摘要:1派生类的构造函数 默认情况下:基类的构造函数不被继承,派生类需要定义自己的构造函数。C++11 规定:可用using语句继承基类构造函数。但是只能初始化从基类继承的成员。这时派生类新增成员可以通过类内初始值进行初始化。 建议:如果派生类有自己新增的成员,且需要通过构造函数初始化,则派生类要自定义构
阅读全文
摘要:公有派生类对象可以被当作基类的对象使用,反之则不可。 派生类的对象可以隐含转换为基类对象; 派生类的对象可以初始化基类的引用; 派生类的指针可以隐含转换为基类的指针。 通过基类对象名、指针只能使用从基类继承的成员。
阅读全文
摘要:7.1继承的基本概念和语法 继承:保持已有类的特性而构造新类的过程称为继承派生:在已有类的基础上新增自己的特性而产生新类的过程称为派生。 继承与派生的目的: 继承的目的:实现设计与代码的重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 派生类的构成:
阅读全文
摘要:1 C风格字符串字符串常量各字符连续、顺序存放,每个字符占一个字节,以‘\0’ 结尾,相当于一个隐含创建的字符常量数组首地址可以赋给char常量指针: 例: 2 string类string实际上是对字符数组操作的封装 string类常用的构造函数: 输入整行字符串 getline可以输入整行字符串(
阅读全文
摘要:1 深层复制与浅层复制浅层复制:实现对象间数据元素的一一对应复制。深层复制:当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指对象进行复制。 2 移动构造C++11 标准中提供了一种新的构造方法——移动构造。C++11 引入移动语义: 源对象资源的控制权全部交给目标对象 当临
阅读全文
摘要:6.10 智能指针C++11 提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理 unique_ptr:不允许多个指针共享资源,可以用标准库中的move函数转移指针shared_ptr:多个指针共享资源weak_ptr:可复制shared_ptr,但其构造或者释放对资源不产
阅读全文
摘要:6.8对象指针 通过指针访问对象成员: ptr->getX() 相当于 (*ptr).getX(); this指针:指向当前对象自己 隐含于类的每一个非静态成员函数中。 6.9动态内存分配 1 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能:在程序执行期间,申请用于存放T类型对
阅读全文
摘要:1 以指针作为函数参数为什么需要用指针做参数? 1 需要数据双向传递时(引用也可以达到此效果,传指针也是引用传递的一种) 2 需要传递一组数据,只传首地址运行效率比较高(实参是数组名时形参可以是指针) 2 指针类型的函数若函数的返回值是指针,该函数就是指针类型的函数。 主函数中定义的数组,在子函数中
阅读全文
摘要:数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。 定义指向数组元素的指针: 经过上述定义及赋值后: *pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i]. a[i], *(pa+i), *(a+i), pa[i]
阅读全文
摘要:1 指针的概念、定义和指针运算内存空间的访问形式: 1 通过变量名访问 2 通过地址访问 指针的概念: 指针:内存地址,用于间接访问内存单元 指针变量:用于存放地址的变量 2 指针的初始化和赋值指针变量的初始化: 存储类型 数据类型 *指针名=初始地址; 注意事项: 1 用变量地址作为初值时,该变量
阅读全文
摘要:6.2 数组作为函数的参数 数组元素作实参,与单个变量一样。数组名作参数,形、实参数都应是数组名(实质上是地址),类型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组。 6.3对象数组对象数组初始化: 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。 通过初始化列表
阅读全文
摘要:1 数组的定义与使用数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 使用数组元素必须先声明,后使用。一般只能逐个引用数组元素,而不能一次引用整个数组 2 数组的存储与初始化一维数组的存储: 数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应
阅读全文
摘要:C++程序的一般组织结构: 1 一个工程可以划分为多个源文件: 类声明文件(.h文件) 类实现文件(.cpp文件) 类的使用文件(main()所在的.cpp文件) 2 利用工程来组合各个文件。 外部变量 如果一个变量除了在定义它的源文件中可以使用外,还能被其它文件使用,那么就称这个变量是外部变量。
阅读全文
摘要:友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。 友元函数: 1 友元函数是在类声明中由关键字friend修饰
阅读全文
摘要:静态数据成员: 1 用关键字static声明 2 为该类的所有对象共享,静态数据成员具有静态生存期。 3 必须在类外定义和初始化,用(::)来指明所属的类。 静态函数成员: 1 类外代码可以使用类名和作用域操作符来调用静态成员函数。 2 静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态成
阅读全文
摘要:5.1标识符的作用域与可见性 作用域是一个标识符在程序正文中有效的区域。 作用域分类:(由小到大) 1 函数原型作用域(从形参表的左括号到形参表的右括号) 如:double area(double radius); 2 局部作用域(块作用域) 3 类作用域 类的成员具有类作用域,其范围包括类体和非内
阅读全文
摘要:4.6UML简介三个基本部分: 事物Things 关系Relationships 图Diagrams 共享聚集:部分可以参加多个整体。组成聚集(组合):整体拥有各个部分,整体与部分共存,如果整体不存在,部分也不存在。 4.7结构体 结构体是一种特殊形态的类: 1 与类的唯一区别:类的缺省访问权限是p
阅读全文
摘要:析构函数:完成对象被删除前的一些清理工作。在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空。 构造函数和析构函数举例: 4.5类的组合组合的概念:类中的成员是另一个类的对象。 类组合的构造函数设计原则:不仅
阅读全文
浙公网安备 33010602011771号