首页 > 代码库 > GeekBand第一周学习笔记

GeekBand第一周学习笔记

Class member Modifiers(类成员修饰词)

  public(公有):可被任何函数及类访问

  private(私有):无法被非友元的外部函数及类访问;

  protected(保护):只能够被自身及子类访问;

  friend(友元):修饰非操作类成员,可将外部函数或类指定为操作类的友元函数(类),友元函数(类)中可直接访问操作类中的private成员.

(PS:class的objects<实例>互为friends<友元>)


 Class with pointer member(s)

   class按有无成员指针可分为Class with pointer member(s)Class without pointer member(s)两种,前者成员指针如在使用过程中新分配了内存并在类生命周期结束后没有pointer指向这个内存遍需要在类的析构函数中释放这个内存,否则这片内存在程序结束前便会一直被占用,造成内存泄露.

(PS:pointer是数据占用内存的头地址,其大小与系统的索址范围相关32位系统中pointer占32bit即4Byte,64位则为8Byte)


Header file(头文件)防卫式声明

Heard file中需要进行防卫式声明宏定义,否则将可能导致头文件重复被包含,绝大多数编译器支持

#ifndef NAME#define NAME......#endif

 部分新版本编译器则支持 #pragma once 的写法.


 inline function(内联函数)

  函数内联能够增加程序运行速度但会降低编译速度并增加目标程序总代码量适合用于频繁调用且代码短小的函数.

  类结构体内声明并定义的函数将优先内联,class结构体外定义的函数则需要在声明前加上inline关键字,函数最终是否内联取决与函数实际代码量与编译器的判断.

( PS:函数内联实际为编译器将函数调用跳转替换为函数实际作用代码,与宏定义是两码事)


 ctor(构造函数)与dtor(析构函数)

  ctordtor在类生命周期开始与结束时会各被调用且只会被调用一次,默认无代码的ctordtor分别执行类成员的内存分配与释放,ctor可以传入参数并重载,dtor则不行.

ctor通常指定为public,当无publicctor时外部将无法显示的新建实例,可通过类中public的函数得到并限制实例的创建.

(PS:dtor通常用于释放成员指针指向内存)


pass by reference & return by reference

  传递与返回参数的&(引用)通常能够增加传递速度,相比传递任何实例时都只会传递实例的首地址并自动解引用.

(PS:当参数为指针类型时不能使用&)


operator overloading(操作符重载)

  操作符重载声明的方法有两种

    A:重载的操作符在类体中被声明,声明方式如同普通成员函数一样,只不过他的名字包含关键字operator,以及紧跟其后的一个c++预定义的操作符. class perason{  bool operator > (type right);...  } 

    B:操作符重载实现为非类成员函数(全局函数)对于全局重载操作符,代表左操作数的参数必须被显式指定. bool operator > (type left,type right); 

(PS:C++要求赋值=,下标[],调用(), 和成员指向-> 操作符必须被定义为类成员操作符.任何把这些操作符定义为名字空间成员的定义都会被标记为编译时刻错误.)

GeekBand第一周学习笔记