与“void”相关的TAG标签
std::unique_ptr不可复制只能移动,拷贝构造和赋值被删除;移交所有权需用std::move()标记为右值,此后源变为空,目标获得资源;函数传参或返回时应合理使用move,避免二次move等逻辑错误。
final用于禁止继承或重写:类定义中写在花括号前(classBasefinal{...};),虚函数声明末尾加final(virtualvoidfoo()constfinal;),C++11起支持,需指定标准版本。
拷贝构造函数仅在四种明确时机被调用:①显式或复制初始化新对象(如Aa(b)或Aa=b);②值传递参数;③返回局部对象(未被RVO优化时);④抛出或按值捕获异常。
struct成员默认public,class默认private;struct继承默认public,class默认private;struct倾向POD类型和C兼容,class强调封装与资源管理。
MSTest、xUnit、NUnit是C#主流单元测试框架,差异在于定位与适用场景:MSTest适合VS集成企业项目,xUnit强调无状态测试设计,NUnit以数据驱动和生态丰富见长;选型应基于团队技术栈与项目需求。
Main方法必须是static,因为CLR启动时未创建类实例,只能调用静态成员;若非static,编译器报CS5001等错误;合法签名均需static,包括asyncTaskMain(编译器自动包装)。
虚函数是C++唯一原生运行时多态机制,通过vtable/vptr实现动态绑定;析构函数必须virtual以防资源泄漏;override强制校验重写签名,构造中调用虚函数无效。
类是编译器识别的内存布局规则与函数绑定约定,本质为结构体加vtable语法糖;空类sizeof为1,含虚函数则至少8字节;对象内存位置决定生命周期,this是隐式传入的常量指针。
C++引用在内存中通常不单独占空间,编译器将其优化为原变量别名;仅当需持久化存储(如类成员、全局引用、lambda捕获)时,才隐式使用指针占用内存。
typedef易错因语法反直觉:先写类型再写别名,但类型可含指针、数组、函数签名等修饰,导致声明形似变量定义;using语法更直观且支持模板别名,是泛化场景唯一选择。
