摘要: new关键字与malloc函数的区别 new关键字是c++的一部分 malloc是由c库提供的函数 new以具体类型为单位进行内存分配 malloc以字节为单位进行内存分配 new在申请内存空间时可进行初始化 malloc仅根据需要申请定量的内存空间 构造函数不可能成为虚函数 在构造函数执行结束后, 阅读全文
posted @ 2018-06-21 23:49 sugarwill 阅读(161) 评论(0) 推荐(0) 编辑
摘要: c++支持编写多重继承的代码 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用 多重继承的问题一 通过多重继承得到的对象可能拥有“不同的地址”!! 解决方案:无 多重继承的问题二 多重继承可能产生冗余的成员 当多重继承关系出现闭合时将 阅读全文
posted @ 2018-06-08 02:16 sugarwill 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 面向对象中的抽象类 可用于表示现实世界中的抽象概念 是一种只能定义类型,而不能产生对象的类 只能被继承并重写相关函数 直接特征是相关函数没有完整的实现 c++语言中没有抽象类的概念 c++中通过纯虚函数实现抽象类 纯虚函数是指只定义原型的成员函数 一个c++类中存在纯虚函数就成为了抽象类 抽象类只能 阅读全文
posted @ 2018-06-08 01:35 sugarwill 阅读(2525) 评论(0) 推荐(0) 编辑
摘要: class是一种特殊的struct 在内存中class依旧可以看作变量的集合 class与struct遵循相同的内存对齐规则 class中的成员函数与成员变量是分开存放的 每个对象有独立的成员变量 所有对象共享类中的成员函数 运行时的对象退化为结构体的形式 所有成员变量在内存中依次排布 成员变量间可 阅读全文
posted @ 2018-06-08 01:19 sugarwill 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 函数重写回顾 父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符(::)可以访问到父类中的函数 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数 父类指针(引用)指向 父类对象则调用父类中定义的函数 子类对象则调用子类中定义的重写函数 面向对象中多态 阅读全文
posted @ 2018-06-08 00:51 sugarwill 阅读(3466) 评论(0) 推荐(0) 编辑
摘要: 子类可以定义父类中的同名成员 子类中的成员将隐藏父类中的同名成员 父类中的同名成员依然存在于子类中 通过作用域分辨符(::)访问父类中的同名成员 c.Parent::mi 类中的成员函数可以进行重载 1.重载函数的本质为多个不同的函数 2.函数名和参数列表是唯一的标识 3.函数重载必须发生在同一个作 阅读全文
posted @ 2018-06-08 00:34 sugarwill 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 重要规则: 子类就是一个特殊的父类 子类对象可以直接初始化父类对象 子类对象可以直接赋值给父类对象 继承中的访问级别 面向对象中的访问级别不只是public和private 可以定义protected访问级别 关键字protected的意义 修饰的成员不能被外界直接访问 修饰的成员可以被子类直接访问 阅读全文
posted @ 2018-05-31 23:55 sugarwill 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 标准数据类型之间会进行隐式的类型安全转换 转换规则如下 char ->short char/short ->int ->unsigned int -> long ->unsigned long ->float ->double char+short -> int 再论构造函数 构造函数可以定义不同类 阅读全文
posted @ 2018-05-30 01:27 sugarwill 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 编译器为每个类默认重载了赋值操作符 默认的赋值操作符仅完成浅拷贝 当需要进行深拷贝时必须重载赋值操作符 赋值操作符与拷贝构造函数有相同的存在意义 Test& operator = (const Test& obj) { if (this != obj) { delete m_pointer; m_p 阅读全文
posted @ 2018-05-29 01:01 sugarwill 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 函数调用操作符( ( ) ) 只能通过类的成员函数重载 可以定义不同参数的多个重载函数 函数对象用于在工程中取代函数指针 int operator () () { int ret = a1; a1 = a0 + a1; a0 = ret; return ret; } Test t; t(); 阅读全文
posted @ 2018-05-29 00:42 sugarwill 阅读(249) 评论(0) 推荐(0) 编辑