美文网首页
C++面向对象高级编程 第四周 博览网

C++面向对象高级编程 第四周 博览网

作者: 我要飞翔_2520 | 来源:发表于2017-05-04 16:05 被阅读0次
    • 转换函数
      转换函数无参数,不用写返回类型(但必须有返回值)。
      例如operator double () const {...}
    • 在构造函数前加explicit 关键字可以阻止编译器隐式调用构造函数将其他类型变为构造类型。
    • point-like classes
      有智能指针和迭代器(一直特殊的智能指针)两种用法。
      智能指针需要重载* (直接 return *sp) ->(直接return sp)两个操作符,其中->操作符作用后会继续传递下去。
      迭代器除了需要重载* -> 之外还需要重载== != ++(后置,无参数) ++(前置 有一个参数) --
    1.png 2.png
    • function-like classes
      重载operator()的一种类
    • 使用namespace
      namespace std {..}命名空间std 内容全部写在括号内。
    • 函数参数列表中一个是传值,一个是传引用不构成函数的重载。返回值不同也不构成函数的重载。一个函数是否是常量函数也构成函数的重载。
    • 常量指针: const int* p1; 此处的const修饰的是*,即表示指针p1指向的是一个常量。
      指针常量: int x; int* const p2 = &x; 此处的const修饰的是p2,即p2是常量,一个指向int型的指针常量,(常量在定义的时候必须被赋值).此指针不可以被重新赋值.数组名其实就相当于一个指针常量,因此数组名不可以被重新赋值。 引用类型也可以看成是一种指针常量,因其声明时必须被初始化,且不可改变其指向的对象。
      特殊情况: int i; int const * pi = &x; 此处说明pi指向的位置中所存的内容不能通过修改*pi的方式来改变.
      对于指针常量和常量指针的口诀:对于const和* 两个字符,在前先读(分别读成指针常量,常量指针),在前不变(const在*号表示指针所指的数据不变,const在变量名前表示指针为常量)。
      指向常量的指针常量 const char * const a;
    • C++动态分配内存 内存状态图(complex类包含两个double成员变量)(string中包含一个char指针)(左边为debugger模式,右边为release模式)
    3.png
    • (32位系统中)对于类成员如果时空类占1个字节,如果有虚函数,每个虚函数会有一个vptr指针占4个字节,如果有静态类成员变量,其在global date memory中,在类实例化中不单独占用内存。类的成员函数不占用类的大小。
      类在内存中占用的空间与成员变量的顺序也有关系。同时遵循数据对齐原则。

    相关文章

      网友评论

          本文标题:C++面向对象高级编程 第四周 博览网

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