1.不能被继承的类// final 关键字直接禁止继承 class NonInheritable final { public: // 类的功能实现 void DoSomething() {} }; // 错误示例继承 final 类会编译报错 // class Derived : public NonInheritable {};原理final 关键字修饰类时编译器会直接禁止任何类继承它语义清晰、实现简洁是现代 C 的标准方案。2. 只能在堆上创建的类实现方案class HeapOnly { public: // 静态工厂函数唯一创建入口通过 new 在堆上分配 static HeapOnly* CreateInstance() { return new HeapOnly; } // 静态销毁函数外部需调用此函数释放对象 void Destroy() { delete this; } private: // 私有构造函数禁止外部直接创建栈对象 HeapOnly() default; // 私有析构函数禁止编译器自动调用栈对象无法自动析构 ~HeapOnly() default; // 禁止拷贝防止通过堆对象拷贝生成栈对象 HeapOnly(const HeapOnly) delete; HeapOnly operator(const HeapOnly) delete; };原理1.构造函数私有化外部无法直接调用构造函数创建栈对象2.析构函数私有化栈对象离开作用域时编译器无法自动调用析构因此不能创建栈对象3.提供静态工厂函数封装new操作仅允许通过堆分配创建对象。3. 只能在栈上创建的类实现方案class StackOnly { public: StackOnly() default; ~StackOnly() default; private: // 私有化 new/delete 运算符禁止堆分配 void* operator new(size_t) delete; void operator delete(void*) delete; // 同时禁止数组形式的堆分配 void* operator new[](size_t) delete; void operator delete[](void*) delete; }; // 使用示例 int main() { StackOnly obj; // ✅ 栈上创建合法 // StackOnly* p new StackOnly; // ❌ 编译报错new 被禁用 return 0; }原理new操作符底层会调用类的operator new将其私有化并删除后外部无法调用new在堆上分配对象只能通过栈上直接创建。4. 不能被拷贝的类class NonCopyable { public: NonCopyable() default; ~NonCopyable() default; // 删除拷贝构造函数和拷贝赋值运算符 NonCopyable(const NonCopyable) delete; NonCopyable operator(const NonCopyable) delete; }; // 使用示例继承此类即可获得不可拷贝特性 class MyClass : public NonCopyable { // 类的功能实现 };原理C11 引入的delete关键字可以显式删除编译器默认生成的拷贝构造和赋值运算符禁止任何形式的拷贝操作常用于资源管理类如智能指针。5. 只能创建一个对象的类单例模式class Singleton { public: // 获取单例实例C11 静态局部变量天然线程安全 static Singleton GetInstance() { static Singleton instance; // 仅初始化一次 return instance; } // 禁止拷贝和赋值 Singleton(const Singleton) delete; Singleton operator(const Singleton) delete; private: // 私有构造/析构禁止外部实例化 Singleton() default; ~Singleton() default; }; // 使用示例 int main() { Singleton s1 Singleton::GetInstance(); Singleton s2 Singleton::GetInstance(); // s1 和 s2 指向同一个对象 return 0; }原理1.构造函数私有化外部无法直接创建对象2.静态成员函数GetInstance提供唯一访问入口3.C11 及以上版本中静态局部变量的初始化是线程安全的保证全局仅存在一个实例。谢谢