首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CSDN搜“看,未来”

    133: error: in C++98 XXX must be initialized by constructor, not by {...}

    C11相对与C98加了不少东西,比如容器的初始化等,如果用C98标准初始化容器,那真的是很爽的。

    1.7K10发布于 2020-08-26
  • 来自专栏C++/Linux

    《回溯 C++98:string 核心机制拆解 —— 从拷贝策略到高效 swap》

    _string拥有庞大字符串 c++-CSDN博客 二、C++98/03 中的三种 swap 实现 swap用于交换两个字符串的内容,不同实现的效率差异显著,核心是 “是否避免数据拷贝”。 结尾: 往期回顾: 《告别 “会用不会讲”:C++ string 底层原理拆解 + 手撕实现,面试 / 开发都适用》 结语:回溯 C++98/03 string 的拷贝与 swap 机制,既是理解早期内存管理智慧的钥匙

    16810编辑于 2025-10-29
  • 来自专栏C / C++

    【C++STL :list类 (一) 】C++98 完全指南:std::list 详解与源码剖析

    C++98中,此操作的时间复杂度为O(1),因为标准要求size()必须在常数时间内完成 2.4 list:element access 链接: front back 函数声明 接口说明

    21110编辑于 2025-11-13
  • C++98 智能指针1 auto_ptr的原理及代码案例】已弃用!!

    std::auto_ptr 是 C++98 引入的一个简单的独占所有权智能指针,但在 C++11 中已经被弃用(deprecated),并在 C++17 中被移除。 这个示例仅用于演示 auto_ptr 的基本用法,不推荐在实际代码中使用): #include <iostream> #include <memory> // 包含 auto_ptr 的头文件(仅在 C+

    9010编辑于 2026-01-23
  • 来自专栏C++11

    C++11相较于C++98的核心提升与实现原理深度解析

    一、语言核心特性革新:从语法糖到编译期逻辑重构自动类型推导:打破C++98的类型声明桎梏在C++98标准中,类型声明的冗余性给开发者带来了显著的代码负担。 在C++98中,尽管const关键字可用于声明常量,但并非所有const变量都能作为编译期常量使用。 模板别名与类型萃取:提升泛型代码可读性与表达力在C++98的泛型编程实践中,类型定义的冗长性是制约代码可读性的重要因素。 模板别名的核心优势不仅在于简洁性,更在于其支持模板部分特化,而这是C++98中typedef无法实现的功能。 override与final:增强继承体系的类型安全在C++98的继承体系中,虚函数重写机制存在潜在的类型安全隐患。

    39300编辑于 2025-07-12
  • 别再只懂 C++98!C++11 这7个核心特性,直接拉开你与普通开发者的差距

    初始化方式 1.1. {}初始化 在C++98中,{}对数组或结构体元素进行统一的列表初始化,例如: // C++98 用{}对数组和结构体进行统一的列表初始化 int arr[] = { 10,20,34,2,2

    16010编辑于 2025-12-18
  • 来自专栏C++系列

    【C++】一文全解四种经典 [ 特殊类 ]的设计

    原理: 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类 不能调用 拷贝构造函数以及赋值运算符重载即可 拷贝和构造是在栈上生成对象 要实现以上操作,C+ +98和C++11中有不同的操作 C++98 将拷贝构造函数与赋值运算符重载只声明不定义,并且将其访问权限设置为私有即可。 static HeapOnly* CreateObject() { return new HeapOnly; } private: // C+ +98 派生类构造时会调用基类的构造函数 C++98中构造函数私有化,派生类中调不到基类的构造函数。 则无法继承 // C++98中构造函数私有化,派生类中调不到基类的构造函数。

    25610编辑于 2024-01-24
  • 来自专栏码农爱学习的专栏

    C++11如何使用大括号{}进行初始化

    函数 在C++11中,集合(列表)的初始化已经成为C++的一个基本功能,被称为“初始化列表(initializer list)” 示例代码: int a[] = { 1, 2, 3 }; //C+ +98支持,C++11支持 int b[]{2, 3, 4}; //C++98不支持,C++11支持 vector<int> c{ 1, 2, 3 }; //C++98不支持,C++ 11支持 map<int, float> d = {{ 1, 1.0f }, { 2, 2.0f }, { 3, 3.0f } }; //C++98不支持,C++11支持 在C++11中,自动变量和全局变量的初始化方式包括 初始化列表页可以用于函数返回的情况,与声明时使用列表初始化一样,列表初始化构造成什么类型是依据返回类型的: vector<int> Func() { return{ 1, 3 }; } 类成员初始化 C+C++98中要求较高:如果静态成员不满足常量性,不能就地声明,且而且即使常量的静态成员也只能是整型或枚举型才能就地初始化。

    63410编辑于 2024-07-31
  • 【C++高级主题】异常处理(五):异常说明

    C++98 引入到 C++17 弃用,异常说明经历了多次变革,其设计初衷与实际效果的差距引发了诸多争议。 一、异常说明的基本概念与语法 1.1 定义异常说明:从 C++98 到 C++11 的演进 在 C++98 中,异常说明是一种函数声明的语法,用于指定函数可能抛出的异常类型。 其基本形式如下: // C++98 异常说明语法 void func() throw(int, std::string); // 声明func可能抛出int或string类型的异常 void noexceptFunc bool b) noexcept(b); // 条件性不抛出异常 1.2 异常说明的分类 C++ 异常说明主要分为三类: ①动态异常说明(Dynamic Exception Specification) C+ ::terminate() ③弃用与保留 C++17 弃用动态异常说明(throw()) noexcept成为推荐的异常说明方式 二、违反异常说明的后果 2.1 动态异常说明的运行时行为 当函数违反 C+

    14510编辑于 2026-01-21
  • 来自专栏C++

    【C++航海王:追寻罗杰的编程之路】C++11(一)

    1 -> C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了 C++98称为C++11之前的最新C++标准名称。 不过由于C++03(TC1)主要是对C++98标准中的漏洞 进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。 相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 2 -> 统一的列表初始化 2.1 -> {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。 3.1 -> auto 在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局 部的变量默认就是自动存储类型,所以auto就没什么价值了。

    26010编辑于 2024-06-04
  • 来自专栏南桥谈编程

    C++11第一弹:简介 | 统一的列表初始化 | 声明

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。 不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。 initializer_list<pair>的构造 map<string, string> dict = { {"sort", "排序"}, {"insert", "插入"} }; return 0; } 声明 auto 在C+

    33210编辑于 2024-09-05
  • 来自专栏Linux网络

    C++11新增语法:列表初始化

    前言:         接下来我们将要讲解,相较于c++98,c++11中新增的语法以及如何使用~。我们首先来讲解:列表初始化。         下文预告:右值引用和移动语义 C++98中传统的{}         在c++98中的{},仅能初始化数组和结构体 #include<iostream> #include<vector> using namespace std; struct Point { int _x; int _y; }; int main() { //c++98的{},可以初始化数组和结构体 int arr[] = { 1,2,3,4,5 注:临时对象具有常性,所有必须要const引用 const Date& d = { 2025,4,17 }; //c++98本身支持单参数的类型转换,不用{}也可以 Date date1 = {

    12610编辑于 2026-01-14
  • 来自专栏C++开发

    【C++课程学习】:C++11(C++发展,列表初始化,声明auto,typeid,decltype)

    C++学习笔记: https://blog.csdn.net/djdjiejsn/category_12682189.html 前言: C++11相对于C++98和C++03而言增加了大约140个新特性 ⛳️持续改进阶段: 自C++98标准发布以来,C++标准已经经历了多次修订和扩展,每一次标准的更新都带来了新的特性、改进和优化,使得C++更加适应现代编程的需求和挑战。 以下是一些主要的变化: ●C++98:C++语言的第一个正式标准版本,包含了许多重要的特性,如类和对象、继承、虚函数和多态、封装、抽象类、模板、异常处理、标准模板库(STL)、命名空间等。 ●C++03:对C++98版本的漏洞做了部分修改。 1.2C++11: C++98是C++第一版的标准,C++03是对C++98中漏洞进行修复,C++11增加很多的新特性,和C++98/03有很大的区别了。

    33200编辑于 2025-01-20
  • 来自专栏跟Qt君学编程

    轻量级Qt键盘-兼容Qt4

    active { background: #00000000; color: black; } \ "); C++98不支持>>需要使用空格分开 将: QList<QPair <QString, QString>> 改为: QList<QPair<QString, QString> > C++98不支持for的直接范围循环 将: const QList<QPair<QString (int i = 0; i < tmp.count(); i++) { const QPair<QString, QString> &each = tmp.at(i); ... } C+

    1.2K20发布于 2020-04-15
  • 【C++11 之nullptr关键字 用以消除空指针和0歧义】基础知识必须了解

    nullptr 是 C++11 中引入的一个新关键字,用于替代 C++98/03 中的 NULL 或字面量 0 来表示空指针。 原理 在 C++98/03 中,NULL 通常被定义为 (void*)0 或简单地 0。但是,使用 0 作为空指针常量有一个问题:0 既可以表示整数零,也可以表示空指针。 例如: void foo(int); void foo(void*); foo(NULL); // 在 C++98/03 中,这可能会导致歧义,因为 NULL 可能被解释为 int 或 void

    15510编辑于 2026-01-23
  • 来自专栏学习C/++

    C++奇迹之旅:列表初始化和std::initializer_list(C++11第一篇)

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。 不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 统一的列表初始化 {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。

    35410编辑于 2024-09-05
  • 来自专栏C++/Linux

    【C++修炼之路】26.C++11(语法糖)

    语法糖) 本节目标 C++11简介 列表初始化 变量类型推导 一.C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C+ 不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 二.统一的列表初始化 2.1 {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。 3.1 auto 在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。

    72500编辑于 2023-03-28
  • 来自专栏C语言学习

    【C++篇】C++11入门:踏入C++新世界的大门

    C++11简介 C++98/03:在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。 不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 列表初始化 1. {}初始化 C++98中⼀般数组和结构体可以⽤{}进⾏初始化。 声明 1. auto 在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局 部的变量默认就是自动存储类型,所以auto就没什么价值了。

    43410编辑于 2025-08-11
  • 来自专栏Linux学习~

    C++11-列表初始化/变量类型推导/范围for/final&override/默认成员函数控制

    本章将开始学习C++11的新语法特性,主要是一些比较常用的语法 一、C++11简介 发展历程: 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C+ +98称为C++11之前的最新C++标准名 不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准 从C++0x 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。 相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率 二、列表初始化 背景引入: 在C++98中,标准允许使用花括号 2}; int x5{1+2}; // 数组 int arr1[5] {1,2,3,4,5}; int arr2[]{1,2,3,4,5}; // 动态数组,在C+

    99660编辑于 2022-11-30
  • 来自专栏ljw

    C++ 的发展

    C++ 1998: C++98 C++ 标准化:C++98 是 C++ 的第一个正式标准版本,由 ISO/IEC 14882:1998 定义。 示例代码:C++98 的常见特性 以下是一个综合示例,展示了 C++98 中的几个核心特性,包括模板、标准库(STL)、命名空间和异常处理。 C++98 的局限性: 没有 auto 关键字:C++98 中没有 auto 关键字,因此类型推导只能依靠显式的类型声明。 C++03 的发布并没有像 C++98 到 C++11 之间的版本那样进行革命性的更新,因此它在功能上与 C++98 并无太大差异。 示例代码:C++98 和 C++03 的差异 由于 C++03 与 C++98 的差异主要体现在语言的细节上,因此以下示例代码在 C++03 中的表现与 C++98 是相同的。

    1.9K10编辑于 2024-11-15
领券