1.求绝对值函数
 (1) _abs()
  C代码  : int _abs(int src)
  汇编: ABS
  功能: 求32位数据的绝对值  
 (2) _labs()
  C代码: int _labs(long src)
  汇编: ABS
  功能: 求40位数据的绝对值
 (3) _abs2()
  C代码: int _abs2(int src)
  汇编: ABS2
  功能: 同时求高16位和低16位的绝对值,即
   return[31:16] = |src[31:16]|
   return[15: 0] = |src[15: 0]|
2.运算指令
 (1) _add2()
  C代码: int _add2(int src1,int src2) 
  汇编: ADD2
  功能: 同时进行src1,src2的高16位和src1,src2的低16位相加,忽略任何进位,即
   return[31:16] = src1[31:16] + src2[31:16]
   return[15: 0] = src1[15: 0] + src2[15: 0]
(2) _sadd()
  C代码: int _sadd(int src1,int src2)
  汇编: SADD
  功能: 普通A+B的加法
 (3) _lsadd()
  C代码: long _lsadd(int src1,long src2)
  汇编: SADD
  功能: 32位数据加上40位数据,返回为40位数据
 (4) _add4()
  C代码: int _add4(int src1,int src2)
  汇编: ADD4
  功能: 同时进行src1和src2的每个对应Byte的4次加法,忽略任何进位,即
   return[31:24] = src1[31:24] + src2[31:24]
   return[23:16] = src1[23:16] + src2[23:16]
   return[15: 8] = src1[15: 8] + src2[15: 8]
   return[ 7: 0] = src1[ 7: 0] + src2[ 7: 0]
  备注: src1,src2的每个8位数据当做signed数据使用
 (5) _sadd2()
  C代码: int _sadd2(int src1,int src2)
  汇编: SADD2
  功能: 同时进行src1,src2的高16位和低16位相加,忽略任何进位.即
   return[31:16] = src1[31:16] + src2[31:16]
   return[15: 0] = src1[15: 0] + src2[15: 0]
  备注: src1,src2的每个16位数据被当做signed数据

(6) _saddus2()
  C代码: int _saddus2(unsigned src1,int src2)
  汇编: SADDUS2
  功能: 执行和_sadd2一样的操作,但src1解释不同,见备注
  备注: src1的每个16位数据被当作unsigned数据,src2的每个16位数据被当作signed数据

(7) _saddu4()
  C代码: unsigned _saddu4(unsigned src1,unsigned src2)
  汇编: SADDU4
  功能: 执行和_add4()一样的操作,但数据解释为unsigned,限值为0xff
  
 (8) _addsub()
  C代码: long long _addsub(int src1,int src2)
  汇编: ADDSUB
  功能:同时进行src1 + src2和src1 - src2操作,即
   hi32(return) = src1 + src2
   low32(return) = src - src2
  
 (9) _addsub2()
  C代码: long long _addsub2(int src1,int src2)
  汇编: ADDSUB2
  功能: 同时进行_add2()和_sub2()操作,即
   return[63:48] = hi16(src1) + hi16(src2)
   return[47:32] = low16(src1) + low16(src2)
   return[31:16] = hi16(src1) - hi16(src2)
   return[15:0] = low16(src1) - low16(src2)

(10) _saddsub()
  C代码: long long _saddsub(unsigned src1,unsigned src2)
  汇编: SADDSUB 
  功能: 同时执行add()和sub()操作,即
   return[63:32] = src1 + src2
   return[31:0] = src1 - src2
 (11) _saddsub2()
  C代码: long long _saddsub2(unsigned src1,unsigned src2)
  汇编: SADDSUB2
  功能: 同时进行sadd2()和ssub2()操作,即
   return[63:48] = src1[31:16] + src2[31:16]
   return[47:32] = src1[15: 0] + src2[15: 0]
   return[31:16] = src1[31:16] - src2[31:16]
   return[15: 0] = src1[15: 0] - src2[15: 0]

(12) _ssub2()
  C代码: int _ssub2(unsigned src1,unsigned src2)
  汇编: SSUB2
  功能: 同时进行高16位和低16位的减法,即
   return[31:16] = src1[31:16] - src2[31:16]
   return[15: 0] = src1[15: 0] - src2[15: 0]

(13) _mpy2(),_mpy2ll
  C代码: double(long long) _mpy2(int src1,int src2),long long _mpy2ll(int src1,int src2)
  汇编: 
  功能:

(15) _mpyhi(),_mpyhill()
  C代码: double _mpyhi(int src1,int src2),long long _mpyhill(int src1,int src2)
  汇编: MPYHI
  功能: 执行16位 * 32位操作,即
   return = src1[31:16] * src2[31: 0]

(15) _mpyli(),_mpylill()
  C代码: double _mpyli(int src1,int src2),long long _mpylill(int src1,int src2)
  汇编: MPYHI
  功能: 执行16位 * 32位操作,即
   return = src1[15: 0] * src2[31: 0]

(16) _mpyhir()
  C代码: int _mpyhir(int src1,int src2)
  汇编: MPYHIR
  功能: 执行(16位 * 32位 >> 15)操作,即
   return = (src1[31:16] * src2[31: 0]) >> 15;
  备注: 结果看起来被四舍五入了,例如0x1122 * 0x55667788结果应该是0x0b6e4b17,但仿真结果为0x0b6e4b18

(16) _mpylir()
  C代码: int _mpylir(int src1,int src2)
  汇编: MPYLIR
  功能: 执行(16位 * 32位 >> 15)操作,即
   return = (src1[15: 0] * src2[31: 0]) >> 15;
  备注: 结果看起来被四舍五入了,例如0x1122 * 0x55667788结果应该是0x0b6e4b17,但仿真结果为0x0b6e4b18
 (17) _mpy*u4(),_mpy*u4ll()
  C代码: double _mpysu4(int src1,int src2),long long _mpysull4(int src1,int src2)
   double _mpyu4(unsigned src1,unsigned src2),long long _mpyu4ll(unsigned src1,unsigned src2)
  汇编: MPYSU4
   MPYU4.M2X B4,A3,B5:A4
  功能: 同时执行4个8位 * 8位操作,即
   return[63:48] = src1[31:24] * src2[31:24];
   return[47:32] = src1[23:16] * src2[23:16];
   return[31:16] = src1[15: 8] * src2[15: 8];
   return[15: 0] = src1[ 7: 0] * src2[ 7: 0];
 (18) _smpy2(),_smpy2ll()
  C代码: double _smpy2(int src1,int src2),long long _smpy2ll(int src1,int src2)
  汇编: SMPY2
  功能: 同时执行两个16位*16位操作,结果再左移1位,即
   return = ((src1[31:16] * src2[31:16] << 32) + (src1[15: 0] * src2[15: 0])) << 1;
(19) _mpy32**()
  C代码: int _mpy32(int src1,int src2),long long _mpy32ll(int src1,int src2)
         long long _mpy32su(int src1,unsigned src2),long long _mpy32us(unsigned src1,int src2)
         long long _mpy32u(unsigned src1,unsigned src2)
  汇编: MPY32
   MPY32SU.M2X B4,A3,B5:A4 
   MPY32US.M2X B4,A3,B5:A4 
   MPY32U.M2X B4,A3,B5:A4 
  功能: 执行32位 * 32位操作
 (20) _mpy2ir()
  C代码: long long _mpy2ir(int src1,int src2)
  汇编: MPY2IR
  功能: 返回如下结果
   return[63:32] = src1[31:16] * src2 >> 15
   return[31: 0] = src1[15: 0] * src2 >> 5
  备注: 每一部分可能被四舍五入

(21) _gmpy()
  C代码: unsignd _gmpy(unsigned src1,unsigned src2)
  汇编: GMPY
  功能: 执行"Galois Field multiply"

(22) _smpy**()
  C代码: int _smpy(int src1,int src2),int smpyh(int src1,int src2)
         int _smpyhl(int src1,int src2),int _smpylh(int src1,int src2)
  汇编: SMPY SMPYH
   SMPYHL SMPYLH
  功能: 执行16位*16位操作,结果再左移一位,限值结果为小于x80000000
   _smpy: return[31: 0] = src1[15: 0] * src2[15: 0] << 1
   _smpyh: return[31: 0] = src1[31:16] * src2[31:16] << 1
   _smpyhl:return[31: 0] = src1[31:16] * src2[15: 0] << 1
   _smpylh:return[31: 0] = src1[15: 0] * src2[31:16] << 1
 (23) _mpy**()
  C代码: int _mpy(int src1,int src2),int _mpyus(unsigned src1,int src2)
   int _mpysu(int src1,unsigned src2),unsigned _mpyu(unsigned src1,unsigned src2)
  汇编: MPY MPYUS
   MPYSU MPYU
  功能: 返回src1[15: 0] * src2[15: 0]的结果
(24) _mpyh**()
  C代码: int _mpyh(int src1,int src2),int _mpyhus(unsigned src1,int src2)
   int _mpyhsu(int src1,unsigned src2),int _mpyhu(unsigned src1,unsigned src2)
  汇编: MPYH MPYHUS
   MPYHSU MPYHU
  功能: 返回src1[31:16] * src2[31:16]的结果
 (25) _mpyh*l*()
  C代码: int _mpyhl(int src1,int src2),int _mpyhuls(unsigned src1,int src2)
   int _mpyhslu(int src1,unsigned src2),int _mpyhlu(unsigned src1,unsigned src2)
  汇编: MPYHL  MPYHULS
   MPYHSLU  MPYHLU
  功能: 返回src1[31:16] * src2[15: 0]的结果
 (26) _mpyl*h*()
  C代码: int _mpylh(int src1,int src2),int _mpyluhs(unsigned src1,int src2)
   int _mpylshu(int src1,unsigned src2),int _mpylhu(unsigned src1,unsigned src2)
  汇编: MPYLH  MPYLUHS
   MPYLSHU  MPYLHU
  功能: 返回src1[15: 0] * src2[31: 16]的结果

(27) _*ssub()
  C代码: int _ssub(int src1,int src2),long _lssub(int src1,int src2)
  汇编: SSUB.L2X B4,A3,B4
  功能: 执行src1 - src2操作,符号扩展为int或long
 (28) _subc()
  C代码:unsigned _subc(int src1,int src2)
  汇编: SUBC
  功能: 未知!!

(29) _sub2()
  C代码: int _sub2(int src1,int src2)
  汇编: SUB2
  功能: 同时执行高16位和低16位减法,即
   return[31:16] = src1[31:16] - src2[31:16]
   return[15: 0] = src1[15: 0] - src2[15: 0]
 (30) _sub4()
  C代码: int _sub4(int src1,int src2)
  汇编: SUB4
  功能: 同时执行4个8位减法,即
   return[31:24] = src1[31:24] - src2[31:24]
   return[23:16] = src1[23:16] - src2[23:16]
   return[15: 8] = src1[15: 8] - src2[15: 8]
   return[ 7: 0] = src1[ 7: 0] - src2[ 7: 0]
 (31) _subabs4()
  C代码: int _subabs4(int src1,int src2)
  汇编: SUBABS4
  功能: 同时执行4个8位减法,再求绝对值,即
   return[31:24] = |src1[31:24] - src2[31:24]|
   return[23:16] = |src1[23:16] - src2[23:16]|
   return[15: 8] = |src1[15: 8] - src2[15: 8]|
   return[ 7: 0] = |src1[ 7: 0] - src2[ 7: 0]|
(32) _avg2()
  C代码: int _avg2(int src1,int src2)
  汇编: AVG2
  功能: 计算两路16位平均值,四舍五入结果
   return[31:16] = (src1[31:16] + src2[31:16] + 1) / 2;
   return[15: 0] = (src1[15: 0] + src2[15: 0] + 1) / 2;
 (33) _avgu4()
  C代码: int _avgu4(int src1,int src2)
  汇编: AVGU4
  功能: 计算四路8位平均值,四舍五入结果
   return[31:24] = (src1[31:24] + src2[31:24] + 1) / 2;
   return[23:16] = (src1[23:16] + src2[23:16] + 1) / 2;
   return[15: 8] = (src1[15: 8] + src2[15: 8] + 1) / 2;
   return[ 7: 0] = (src1[ 7: 0] + src2[ 7: 0] + 1) / 2;

3.位操作指令
 (1) _clr()
  C代码: int _clr(unsined src,unsigned csta,unsigned cstb)
  汇编: CLR
  功能: 清除src上的位csta ~ 位cstb,即
   src[cstb:csta] = 0;
  备注: csta必须 <= cstb,且保证 < 32

(2) _clrr()
  C代码: int _clrr(unsigned src,int shift)
  汇编: CLR
  功能: 清除src上的shift[ 9: 5] ~ shift[ 4: 0]位
 (3) _set()
  C代码: int _set(unsined src,unsigned csta,unsigned cstb)
  汇编: SET
  功能: 设置src上的位csta ~ 位cstb,即
   src[cstb:csta] = '1';
  备注: csta必须 <= cstb,且保证 < 32
 (4) _setr()
  C代码: int _setr(unsigned src,int shift)
  汇编: SET
  功能: 设置src上的shift[ 9: 5] ~ shift[ 4: 0]位为'1'
  
 (5) _sshl()
  C代码: int _sshl(int src,unsigned shift)
  汇编: SSHL
  功能: return[31: 0] = src << shift;
  备注: 有符号扩展功能
(6) _rotl()
  C代码: int _rotl(unsigned src,unsigned shift
  汇编: ROTL
  功能: return[31: 0] = src << shift;
  备注: 无符号扩展功能
 (7) __shlmb(),__shrmb()
  C代码: int _shlmb(int src1,int src2),int _shrmb(int src1,int src2)
  汇编: SHLMB
  功能: shlmb-->return[31:0] = (src2 << 8) | src1[31:24]
   shrmb-->return[31:0] = (src2 >> 8) | (src1[7: 0] << 24)
 (8) __shr2(),_shru2()
  C代码: int _shr2(int src1,unsigned shift),int _shru2(unsigned src1,unsigned shift)  
  汇编: SHR2
  功能: return[31: 16] = src1[31:16] >> shift
   return[15:  0] = src1[15: 0] >> shift
  备注: 有符号数操作返回值会进行符号扩展(移出的位全部补1)
 (9) _sshvl(),_sshvr()
  C代码: int _sshvl(int src,int shift),int _sshvr(int src,int shift)
  汇编: SSHVL  SSHVR
  功能: sshvl-->return[31: 0] = (src << shift) > MAX_INT?MAX_INT:(src << shift)
   sshvr-->return[31: 0] = (src >> shift) < MIN_INT?MIN_INT:(src >> shift)
(10) _shfl()
  C代码: int _shfl(int src)
  汇编: SHFL
  功能: 低16位嵌入到偶位,高16位嵌入到奇位,即
   return[31:0] = src[31]src[15]src[30]src[14]........src[16][src[0]
 (11) _ext()
  C代码: int _ext(int src,unsigned lshift,unsigned rshift)
  汇编: EXT
  功能: return[31: 0] = (src << lshift) >> rshift;
 (12) _extr()
  C代码: int _extr(int src,int shift)
  汇编: EXT
  功能: return[31: 0] = (src << shift[ 9: 5]) >> shift[4: 0];
 (13) _extu()
  C代码: int _extu(int src,unsigned lshift,unsigned rshift)
  汇编: EXT
  功能: return[31: 0] = (src << lshift) >> rshift;
 (14) _extur()
  C代码: int _extur(int src,int shift)
  汇编: EXT
  功能: return[31: 0] = (src << shift[ 9: 5]) >> shift[4: 0];
 (15) _lmbd()
  C代码: unsigned _lmbd(int zero_or_one,int src)
  汇编: LMBD
  功能: 从左到右查找该位是zero_or_one的位,返回该位置
  备注:
zero_or_one必须为0或者1,为其他值无LMBD指令编译
   如src = 0x0fff0000,则
   _lmbd(0,src) == 0 /*D31为'0',所以返回0*/
   _lmbd(1,src) == 4 /*D27为'1',所以返回4*/
  (16) _*norm()
  C代码: unsigned _norm(int src),unsignd _lnorm(long src)
  汇编: NORM B4,B4
  功能: 未知

(17) _bitc4()
  C代码: unsigned _bitc4(unsigned src)
  汇编: BITC4
  功能: 统计每个字节的'1'总数,4个总数合成unsigned返回
  备注: 
   例如src = 0x01030507,因为4个字节分别有0x01,0x02,0x03,0x04个'1',所以返回为0x01020304
 (18) _bitr()
  C代码: unsigned _bitr(unsigned src)
  汇编: BITR
  功能: 反转所有的位,即return[31:0] = src[ 0:31]
  备注: 
   例如src = '00010001000100010001000100010001',则返回值是'10001000100010001000100010001000'
 (19) _deal()
  C代码: unsigned _deal(unsigned src)
  汇编: DEAL
功能: 所有偶位组合成一个16位数据,所有奇位组合成一个16位数据,返回该32位值,即
   return[31:16] = src[31,29,27,....,1]
   return[15: 0] = src[30,28,26,....,0]

4.内存操作指令
 (1) _amem*()
  C代码: ushort& _amem2(void* ptr),const ushort _amem2_const(void* ptr)
   unsigned& _amem4(void* ptr),const unsigned& _amem4_const(void* ptr)
   long long _amem8(void* ptr),const long long& _amem8_const(void* ptr)
   double & _amemd8(void* ptr),const double& _amemd8_const(void* ptr)
  汇编: 略
  功能: 从对齐地址中读/写n字节数据,n = 以上的数字
  备注:
   读--->
    double val;
    char test[8] = {0,1,2,3,4,5,6,7}; 
    val = _amem2_const(&test) + _amem4_const(&test) + _amem8_const(&test);
   写--->
    _amem2(&test) = 0x0011;
    _amem4(&test) = 0x00112233;
    _amem8(&test) = 0x0011223344556677;
 (2) _mem*()
C代码: ushort& _mem2(void* ptr),const ushort _mem2_const(void* ptr)
   unsigned& _mem4(void* ptr),const unsigned& _mem4_const(void* ptr)
   long long _mem8(void* ptr),const long long& _mem8_const(void* ptr)
   double & _memd8(void* ptr),const double& _memd8_const(void* ptr)
  汇编: 略
  功能: 从非对齐地址中读/写n字节数据,n = 以上的数字
  备注:
   读--->
    double val;
    char test[8] = {0,1,2,3,4,5,6,7}; 
    val = _mem2_const(&test) + _mem4_const(&test) + _mem8_const(&test);
   写--->
    _mem2(&test) = 0x0011;
    _mem4(&test) = 0x00112233;
    _mem8(&test) = 0x0011223344556677;

(3) _mvd()
  C代码: int _mvd(int src)
  汇编: MVD
  功能: 利用4周期乘法流水线拷贝数据,return[31: 0] = src[31: 0]
  备注: 这个需要和_mpy**()配合实现并行工作

5.数据包装/转换指令
 (1) _hi**()
  C代码: unsigned _hi(double src),unsigned _hill(long long src)
  汇编: 无
  功能: 返回64位数据的高32位数据
 (2) _low**()
  C代码: unsigned _lo(double src),unsigned _loll(long long src)
  汇编: 无
  功能: 返回64位数据的低32位数据
 (3) _*to*()
  C代码: ulong _dtol(double src),unsigned _ftoi(float src)
   double _itod(unsigned hi32,unsigned low32),float _itof(unsigned src)
   long long _itoll(unsigned hi32,unsigned low32),double _ltod(long src)
  汇编: 无
  功能: 各种数据类型互相转换
(4) _sat()
  C代码: int _sat(long src2)
  汇编: SAT
  功能: 把40位long数据转成32位数据
 (5) _pack*2()
  C代码: unsigned _pack2(unsigned src1,unsigned src2),
   unsigned _packh2(unsigned src1,unsigned src2)
  汇编:  PACK2 PACKH2
  功能: _pack2--->return[31:16] = src1[15: 0],return[15: 0] = src2[15: 0]
   _packh2-->return[31:16] = src1[31: 16],return[15: 0] = src2[31: 16]
 (6) _pack*4()
  C代码: unsigned _packh4(unsigned src1,unsigned src2),
   unsigned _packl4(unsigned src1,unsigned src2)  
  汇编: PACKH4 PACKL4
  功能: 返回交替的4字节数据
  备注: 如src1 = 0x11223344,src2 = 0x55667788,则
   _packh4(src1,src2)返回0x11335577
   _packl4(src1,src2)返回0x22446688
 (7) _pack**2()
  C代码: unsigned _packhl2(unsigned src1,unsigned src2),
   unsigned _packlh2(unsigned src1,unsigned src2)
  汇编:  PACKHL2 PACKLH2
  功能: _packhl2--->return[31:16] = src1[31: 16],return[15: 0] = src2[15: 0]
   _packlh2-->return[31:16] = src1[15: 0],return[15: 0] = src2[31: 16]

(8) _spack2()
  C代码: int _spack2(int src1,int src2)
  汇编: SPACK2
  功能: 把两个32位数据格式化成16位数据,然后组合成32位数据
  备注: return[31: 16] = (int16_t)src1
   return[15: 0] = (int16_t)src2
 (9) _spacku4()
  C代码: unsigned _spacku4(int src1,int src2)
  汇编: SPACKU4
  功能: 把4个16位数据格式化成4个8位数据,形成32位数据返回
  备注: return[31:24] = (unt8_t)src1[31:16]
   return[23:16] = (unt8_t)src1[15: 0]
   return[15: 8] = (unt8_t)src2[31:16]
   return[ 7: 0] = (unt8_t)src1[15: 0]
 (10) _swap4()
  C代码: unsigned _swap(unsigned src)
  汇编: SWAP4
  功能: 大小端数据转换
  备注: return[31:24] 和 return[23:16] 交换
   return[15: 8] 和 return[ 7: 0] 交换
 (11) _unpkhu4()
C代码: unsigned _unpkhu4(unsigned src)
  汇编: UNPKHU4
  功能: 把两个高8位数据转成两个16位数据
  备注:
   return[31:16] = (uint16_t)src[31:24]
   return[15: 0] = (uint16_t)src[23:16]
 (12) _unpklu4()
  C代码: unsigned _unpklu4(unsigned src)
  汇编: UNPKHU4
  功能: 把两个低8位数据转成两个16位数据
  备注:
   return[31:16] = (uint16_t)src[15: 8]
   return[15: 0] = (uint16_t)src[ 7: 0]
6.比较/杂项指令
 (1) _cmpeq*() _cmpgt*()
   C代码: int _cmpeq2(int src1,int src2),int _cmpeq4(int src1,int src2)
       int _cmpgt2(int src1,int src2),int _cmpgtu4(unsigned src1,unsigned src2)
   汇编:  CMPEQ2 CMPEQ4
       CMPGT2 CMPGT4
   功能:  同时比较两个16位数据或者4个8位数据,比较结果在返回值的低2位或低四位中
   备注:
 _cmpeq2(0x11223344,0x11220000)返回为0x02
       _cmpeq4(0x11223344,0x00223344)返回为0x07
       _cmpgt2(0x00001111,0x0000ffff)返回为0x01
       _cmpgtu4(0x0000ffff,0x0000aaaa)返回0x03
 (2) _xpnd*()
   C代码: int _xpnd2(int src),int _xpnd4(int src)
   汇编:  XPND2  XPND4
   功能:  _xpnd2()把src的低2位逻辑值扩展为2个16位逻辑值
       _xpnd4()把src的低4位逻辑值扩展为4个8位逻辑值
   备注:
      _xpnd*()一般和_cmp*()配合实现逻辑扩展
      _xpnd2(0x01) =  0x0000ffff
      _xpnd2(0x03) =  0xffffffff
      _xpnd2(0x00) =  0x00000000
      _xpnd4(0x00) =  0x00000000
      _xpnd4(0x08) =  0xff000000
      _xpnd4(0x07) =  0x00ffffff
      _xpnd4(0x01) =  0x000000ff

C6000系类的内联函数的更多相关文章

  1. (转载)内联函数inline和宏定义

    (转载)http://blog.csdn.net/chdhust/article/details/8036233 内联函数inline和宏定义   内联函数的优越性: 一:inline定义的类的内联函 ...

  2. (inline)内联函数在IOS开发中的使用

    今天在阅读YYKit源码(https://github.com/ibireme/YYKit.git)时发现在YYKitMacro.h组件中大量使用的内联函数,例如此文件中的一个函数 static in ...

  3. c++内联函数解析(inline)

    一.基本定义 inline是C++语言中的一个关键字,可以用于程序中定义内联函数,inline的引进使内联函数的定义更加简单.说到内联函数,这里给出比较常见的定义,内联函数是C++中的一种特殊函数,它 ...

  4. C++ 内联函数 摘自 C++ 应用程序性能优化

    内联函数 在C++语言的设计中,内联函数的引入可以说完全是为了性能的考虑.因此在编写对性能要求比较高的C++程序时,非常有必要仔细考量内联函数的使用. 所谓"内联",即将被调用函数 ...

  5. c++学习笔记(2)类的声名与实现的分离及内联函数

    一.类的声名与实现的分离: 和c函数声明与实现分离类似 有.h : 类的声明 .cpp : 类的实现 在在一个类的cpp中应该包含本类的.h文件 在cpp中类的使用:例: //Circle类 //Ci ...

  6. 拷贝构造函数,深拷贝,大约delete和default相关业务,explicit,给定初始类,构造函数和析构函数,成员函数和内联函数,关于记忆储存,默认参数,静态功能和正常功能,const功能,朋友

     1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.另外一种初始化的方式是直接在构造方法里面实现初始化. 案比例如以 ...

  7. C++ 类 & 对象-C++ 内联函数-C++ this 指针-C++ 类的静态成员

    C++ 内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端 ...

  8. 【C++】类内函数与内联函数

    今天本来在休息,结果小伙伴问了我个问题,把我的三观都颠覆了.get到了新的知识点,这里记录一下. 内类的函数,都默认为是内联函数!! 这居然是真的.然后我就懵了.因为内联函数应该是定义在头文件里比较好 ...

  9. C/C++(C++内存管理,内联函数,类型转换,命名空间,string类)

    ---恢复内容开始--- 内存管理 new/delete C语言中提供了 malloc 和 free 两个系统函数,#include "stdlib.h"库函数,完成对堆内存的申请 ...

随机推荐

  1. spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)

    spring官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...

  2. java 事件监听 - 鼠标

    java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...

  3. 安装LockBox 3.7.0,用LockBox加密解密!

    LockBox  官  方  网  站:http://lockbox.seanbdurkin.id.au/HomePage LockBox的Github 网址:https://github.com/S ...

  4. mysql的故事

    所有的条件都分开理解,命令之间没有包含吗?

  5. Codeforces 732F [边双联通分量][tarjan]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一个无向图.现在要求给这个无向图的边加上方向. 定义f(x)为从x点出发能够到达的点的数目. 使得MIN(f(x))最大. 思路: 先tarja ...

  6. Python中__init__方法

      注意1.__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. 1 2 3 4 5 class A(object):     def __init__(self,name): ...

  7. Servlet基础

    今天在学习Servlet的时候遇到了一个问题:大概是这样java.lang.ClassNotFoundException: HelloServlet at org.apache.catalina.lo ...

  8. workplace background

    class:SysSetupFormRun public void run() { super(); this.design().colorScheme(FormColorScheme::RGB); ...

  9. This kind of launch is configured to open the Debug perspective when it suspends.

    This kind of launch is configured to open the Debug perspective when it suspends. 因为设置了断点才会弹出这个,不需要调 ...

  10. Log.properties配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...