美文网首页
C++带有指针的类笔记-Geekband

C++带有指针的类笔记-Geekband

作者: poppush | 来源:发表于2016-05-23 08:57 被阅读0次

对class有一种经典分类,即分为:

   1.不带有指针成员的类Class without pointer member(s);如complex类

   2.带有指针成员的类Class with pointer member(s);如string类

不带有指针成员的类在上一篇已经总结过,而实现一个带有指针成员的类要注意以下知识点:

1.带有指针成员的类就必须写出拷贝构造函数拷贝赋值函数

2.拷贝构造(copy constructor),拷贝赋值(copy assignment operator),析构函数(destructor)并称为Big Three:

3.同一个class的不同的对象互为friend,因此可以直接取友元内的属性值。

String s2(s1)和Strings2 = s1的意义是完全相同的。

4.在实现拷贝赋值时,要记得先清空,然后分配指定的赋值所需空间,最后再将内容拷贝过来。

5.在实现拷贝赋值时要记得检测自我赋值,如果没有检测,一旦使用者进行自我赋值,就会报错。会出错的原因是拷贝赋值中的先清空再分配再赋值的操作,自我赋值时先清空后要赋值的内容就被删除了,再进行取值会产生未定义的行为。

附:堆(heap)和栈(stack)

Stack, 是存在于某作用域(scope)的一块内存空间(memory space)。例如当你调用函数时,函数本身即形成一个stack用来放置它所接收的参数,以及返回地址。

在函数本体(function body)内声明的任何变量,其所使用的内存块都取自上述stack。

Heap, 或谓之System heap, 是指由操作系统提供的一块global内存空间,程序可动态分配(dynamic allocated)从某种获得若干区块(blocks)。

由于动态分配的内存是由堆(heap)中取得的,因此对于这些获得的内存,我们有责任手动释放它,使用delete语句。

object可以分为stack object,global object,static object,和heap object

stack object 的生命周期,在其scope即作用域内,一旦作用域结束,它会被自动清理。

static object 被声明为静态的,将一直持续到程序运行结束。

global object 在外部全局声明,其生命周期和static一样将持续到程序运行结束。

heap object 则将在其被delete之际结束自己的生命周期,如果不delete,因为指向其的指针存在于stack中,一旦指针被清除,heap obeject将变为孤儿,从而发生内存泄漏。

相关文章

  • C++带有指针的类笔记-Geekband

    对class有一种经典分类,即分为: 1.不带有指针成员的类Class without pointer memb...

  • GeekBand C++面向对象高级编程(二)

    本笔记为GeekBand C++面向对象高级编程(上)第二周课程之总结。 一、三大函数 从string类入手,讲解...

  • GeekBand C++面向对象高级编程(一)

    本笔记为GeekBand C++面向对象高级编程(上)第一周课程之总结。 本周主要内容涉及: -- 头文件与类的...

  • C++学习日志(2)

    本内容源于geekband c++ 一.拷贝构造,拷贝赋值,析构 1、用于有指针成员情况 2、拷贝构造 Strin...

  • C++ 指向类的指针

    原文地址:C++ 指向类的指针 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成...

  • (GeekBand)C++面向对象之无指针类

    课堂笔记 1.模板的定义及使用: 有时候我们不确定要定义的类里面的数据类型,因此我们使用模板来定义这个数据。这样在...

  • (GeekBand)C++面向对象之有指针类

    1.带指针类设 带指针类必须含有拷贝构造、拷贝赋值以及析构函数。 1.String类解析 在string类中有一个...

  • 1.2.09_C++ 指向类的指针

    C++ 类 & 对象 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算...

  • C++类的实现笔记-GeekBand

    在编写C++程序要实现一个类时,要考虑以下几点: 1.怎样封装实现抽象数据类型,数据应放在private部分,而在...

  • C++第一周笔记

    1.分为带有指针的类,和不带有指针的类。 2.c++代码基本形式,头文件(.h文件)& 主程序(.cpp文件,可能...

网友评论

      本文标题:C++带有指针的类笔记-Geekband

      本文链接:https://www.haomeiwen.com/subject/rqharttx.html