Home

CPP-Exception-Advanced

CPP-Exception-Advanced

已知 异常类/异常对象, CPP-runtime/编译器会维护一个副本copy 进入catch-handler时, 在try子句中, 编译器管理已构造局部对象(非指针), 进行析构 具体同如下DO

Click to read more ...

CPP-template-advanced-continuation

CPP-template-advanced-continuation

  • T(args…) 构造 => 匿名对象是(非const)右值, 类似函数对象返回 => 难以体现右值性(与对象相关的右值)
  • 什么是右值 => 任何exp(除了[], *解引用)值(operator相关), 函数返回值, 匿名构造
  • 什么是左值 => 类型声明, 实例化对象
  • 右值/左值差别 => 语义(semantic)相关, 运算符(operator)相关, 小命长短相关
  • 注意const右值 当且仅当对于对象才有意义
  • const右值引用也存在, 可以绑定const/非const右值

    只是为了语法的完整性而存在, 无法触发真正的移动语义 => 因为无法进行steal operation => 进而没B用 如move constructor, move assignment, std::move()返回无意义啊 将只会触发copy assignment, 即 const T& 范式

Click to read more ...

CPP-template-advanced

CPP-template-advanced

成员模板

  • 成员函数模板
    • 类成员 => 由函数模板参数确定函数实例
    • 模板成员 =>2套前缀 由类模板参数确定类实例, 函数模板参数确定函数实例

      1套前缀时, 类模板的成员一定是函数模板(即成员模板)

Click to read more ...

JS-Weak-Type

JS-Implicit-Type-Conversion

T -> Number/算数类型

Number() 显式构造

  • String
    • 空 => 0
    • 合法字面值 => parse正确
    • 不具有parseint, parsefloat的灵活性
  • Boolean
    • t/f => 1/0
  • null => 0
  • undefined => NaN
  • Function, Date, RegExp, Array, Customized Type(等等种种引用类型)
    • 先toString(), 再遵循第一条

Click to read more ...

JS-OOP

JS-OOP-Customized Type

JS OO(OOP) 必须熟练口诀/要领

  • 对象是属性的(无序?)集合
  • 方法属性化, 即 Built-in Type Function对象, 函数对象(function基本与其同义)
  • 没有class, struct关键字, 有Ctor, 有如下
  • Ctor 构造函数 构造函数对象类型 Type
  • 证据
    • 运算符: obj instanceof T <=> obj.constructor == T(来自原型对象)
    • T 即所谓类型, 而实际为 如上, 只有 Ctor

Click to read more ...

JS引用与值

JavaScript 引用类型与值类型

值类型

  • 引号字符串字面值 <=> 值类型字符串
  • 整型(10, 8, 16base)/浮点型(10base)字面值 <=> 值类型算数(数值)类型
  • 布尔字面值 true/false <=> 值类型布尔
  • undefined (继承自null ?)
  • null (引用类型null)
  • 运算符 typeof T 返回字符串形式的 string, number, boolean, undefined, object
  • 而其对应的类型标识符为 String, Number, Boolean, Object, undefined
  • 注意: typeof null返回object; 这正是undefined存在的原因
  • 值类型没有成员/属性, 方法

Click to read more ...