C++ 98/03 应该学习哪些知识5

从C98到C26:C++语言的演变与进步 从C++98到C++26,C++经历了多次重大变革,每一次更新都致力于解决开发者面临的实际问题,并适应不断变化的技术环境。无论是早期的面向对象编程,还是后来的泛型编程、多线程支持和模块化设计,C++始终保持着其作为一门强大而灵活的语言的地位。对于开发者来说,了解这些变化不仅能帮助我们更好地掌握这门语言,还能让我们在项目中充分利用其最新特性,从而编写出更高效、更安全的代码。未来,C++仍将在软件开发领域发挥重要作用,值得我们持续关注和学习。 阅读详情

1.C和C++区别.

C和C++是两种编程语言,C++是在C语言的基础上发展而来的一种面向对象的语言,两者虽然有很多相似之处,但也存在很多区别。下面将对C和C++的区别进行详细的介绍并举例说明。

  1. 面向对象支持程度不同

C++是一种面向对象的编程语言,具有面向对象的封装、继承和多态等特性。而C语言不支持面向对象编程。

举例说明:

C++中定义一个类,并使用继承和多态实现一个简单的形状类的继承和输出。

#include <iostream>

using namespace std;

class Shape {
public:
    virtual void draw() = 0;
};

class Rectangle : public Shape {
public:
    void draw() {
        cout << "Drawing Rectangle" << endl;
    }
};

class Circle : public Shape {
public:
    void draw() {
        cout << "Drawing Circle" << endl;
    }
};

int main() {
    Shape *shape;
    Rectangle rect;
    Circle circle;

    shape = &rect;
    shape->draw();

    shape = &circle;
    shape->draw();

    return 0;
}

C中定义一个结构体并使用函数对其进行操作,实现对矩形面积和周长的计算。

#include <stdio.h>

struct Rectangle {
    int width;
    int height;
};

int area(struct Rectangle rect) {
    return rect.width * rect.height;
}

int perimeter(struct Rectangle rect) {
    return 2 * (rect.width + rect.height);
}

int main() {
    struct Rectangle rect;
    rect.width = 10;
    rect.height = 20;

    printf("Area: %d\n", area(rect));
    printf("Perimeter: %d\n", perimeter(rect));

    return 0;
}
  1. 数据类型定义和处理方式不同

C++支持bool类型和引用类型,而C语言不支持。

举例说明:

C++中定义一个bool类型的变量并输出。

#include <iostream>

using namespace std;

int main() {
    bool b = true;
    cout << "b = " << b << endl;

    return 0;
}

C中使用int类型模拟bool类型,并输出。

#include <stdio.h>

#define BOOL int
#define TRUE 1
#define FALSE 0

int main() {
    BOOL b = TRUE;
    printf("b = %d\n", b);

    return 0;
}

C++中使用引用类型,可以方便地对变量进行赋值和传递。

#include <iostream>

using namespace std;

void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

int main() {
    int a = 10;
    int b = 20;

    swap(a, b);

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}

C中不支持引用类型,可以使用指针来代替。

#include <stdio.h>

void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}

int main() {
int a = 10;
int b = 20;

swap(&a, &b);

printf("a = %d\n", a);
printf("b = %d\n", b);

return 0;
}


3. 异常处理不同

C++支持异常处理机制,可以使用try-catch语句来捕获和处理异常。而C语言不支持异常处理机制,只能通过返回值等方式来处理错误。

举例说明:C++中使用try-catch语句捕获除数为0的异常。

#include <iostream>

using namespace std;

int main() {
    int a = 10;
    int b = 0;

    try {
        if (b == 0) {
            throw "Division by zero";
        }

        cout << "a / b = " << a / b << endl;
    } catch (const char *msg) {
        cerr << msg << endl;
    }

    return 0;
}

C中使用if语句判断除数是否为0,并返回错误码

#include <stdio.h>

#define ERROR_DIV_BY_ZERO -1

int main() {
    int a = 10;
    int b = 0;

    if (b == 0) {
        printf("Division by zero\n");
        return ERROR_DIV_BY_ZERO;
    }

    printf("a / b = %d\n", a / b);

    return 0;
}
  1. C++支持函数重载,C语言不支持

C++支持函数重载,可以在同一个作用域内定义多个同名函数,它们的参数个数或类型不同。而C语言不支持函数重载。

举例说明:

C++中定义两个同名函数,但参数列表不同。

#include <iostream>

using namespace std;

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

int main() {
    cout << "add(10, 20) = " << add(10, 20) << endl;
    cout << "add(1.5, 2.5) = " << add(1.5, 2.5) << endl;

    return 0;
}

C中定义两个函数,但函数名不能相同。

#include <stdio.h>

int add_int(int a, int b) {
    return a + b;
}

double add_double(double a, double b) {
    return a + b;
}

int main() {
    printf("add_int(10, 20) = %d\n", add_int(10, 20));
    printf("add_double(1.5, 2.5) = %f\n", add_double(1.5, 2.5));

    return 0;
}
  1. C++支持命名空间,C语言不支持

C++中可以使用命名空间来避免命名冲突,而C语言不支持命名空间。

举例说明:

C++中定义一个命名空间,并在其中定义一个函数。

C++和C的区别总结:

  1. C++支持面向对象编程,C语言不支持。

  2. C++支持函数重载,C语言不支持。

  3. C++支持异常处理机制,C语言不支持。

  4. C++支持命名空间,C语言不支持。

  5. C++支持引用类型,C语言不支持。

  6. C++支持默认参数,C语言不支持。

  7. C++支持函数模板和类模板,C语言不支持。

  8. C++标准库提供了更多的数据结构和算法,C语言标准库比较简单。

总的来说,C++是C语言的超集,除了支持C语言的所有特性,还扩展了很多新的特性,支持面向对象编程和泛型编程,更适合大型项目开发和维护。而C语言则更适合底层系统编程和嵌入式开发,它更加轻量级和高效。

以下是一个使用C++面向对象编程的例子:

#include <iostream>

using namespace std;

class Shape {
public:
    virtual double getArea() = 0;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}

    double getArea() {
        return width_ * height_;
    }

private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}

    double getArea() {
        return 3.1415926 * radius_ * radius_;
    }

private:
    double radius_;
};

int main() {
    Shape *shape1 = new Rectangle(10, 20);
    Shape *shape2 = new Circle(5);

    cout << "shape1 area = " << shape1->getArea() << endl;
    cout << "shape2 area = " << shape2->getArea() << endl;

    delete shape1;
    delete shape2;

    return 0;
}

为什么很少听到C++03标准编译器?C++编译器。Java语言不同类型编译器?C/C++编译器和支持标准。 从上世纪50年代开始,编程语言五花八门,编译器和解释器层出不穷。此处只列出常见编程语言的编译器和解释器信息,不常见的编程语言有单独文章介绍。 阅读详情

相关推荐

C++98与C++14:时代变迁下的编程语言进化

在编程世界中,C++无疑是一种强大且流行的语言。自其诞生以来,C++已经经历了多个版本的迭代和更新,其中C++98和C++14是两个具有里程碑意义的版本。本文将详细介绍这两个版本之间的区别,帮助读者更好地理解C++语言的进化历程。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 1989

[zhujie]第九周C++实验

//7-5 #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; const double PI = 3.14; class Shape{ public: Shape(){} ~Shape(){} virtual double getArea(){return -1;}//重写虚拟函...

⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄. 菜鸟不吃草! 226

10BASE-T1S协议中的PLCA机制:实现无碰撞网络传输的关键

本文深入解析了10BASE-T1S协议中的PLCA(物理层冲突避免)机制。作为IEEE 802.3cg标准的关键部分,PLCA通过循环调度与机会传递,从根源上避免了网络碰撞,为工业与汽车等场景提供了确定性的低延迟传输保障,是实现可靠实时通信的核心技术。

weixin_29250403的博客 210

C++98/03版本知识点汇总

1.类只在代码中出现,不会在运行的程序中出现,即编译时出现;对象在运行的程序中出现,并占用内存,是运行的实体; 2.消息传递的实质是方法的调用; 3.面向对象最突出的特征是:封装性、继承性、多态性 封装:将数据结构和作用在数据结构上的操作组成一个实体,单位是对象,提供动态代码共享; 继承性:提供静态的代码共享; 多态性:不同的对象收到相同的消息产生多种不同的行为方式 编译时的多态性:通

忘世麒麟的专栏 3220

用Python进行GEO数据挖掘(学习笔记四):富集分析

该笔记详细解释了富集分析的工作原理,并简要地利用gseapy在python中进行富集分析的操作。

m0_64111502的博客 5649

企业IT运维实录:批量部署银河麒麟V10-SP1,Ghost镜像与UKey激活实战

本文详细介绍了企业级银河麒麟V10-SP1操作系统的批量部署全流程,包括标准化镜像制作、自动化封装技术、网络化部署方案及UKey集群激活方案。通过实战案例和技术要点解析,帮助企业IT运维团队大幅提升部署效率,确保系统安全与稳定性。

weixin_30729609的博客 388

C++ 98/03 应该学习哪些知识13

new/delete和malloc/free

clayhell的博客 1177

具身智能ACT模型在lerobot机械臂上的实践与优化

本文详细介绍了如何在低成本lerobot机械臂上实践与优化具身智能ACT模型。从环境搭建、数据采集到模型原理与代码实战,提供了完整的入门指南。重点分享了通过数据增强、混合开源数据集及模型微调等策略,有效提升模型在抓取放置任务中的泛化能力与鲁棒性,为机器人学习爱好者提供了宝贵的实战经验。

weixin_29081703的博客 170

C++ 98/03 应该学习哪些知识19

迭代器、空间配置器理解

clayhell的博客 1468

电路设计仿真软件:Mentor Graphics_(1).MentorGraphics电路设计仿真软件概述

菜单栏:包含文件、编辑、视图、工具等菜单。工具栏:提供常用的工具按钮,如打开、保存、仿真等。原理图编辑区:用于绘制电路原理图。元件库:包含各种电路元件,支持拖拽操作。属性面板:显示选中元件的属性,可以进行参数设置。仿真控制区:用于设置仿真参数和控制仿真过程。输出窗口:显示仿真结果和日志信息。打开模型编辑器:点击“工具”菜单,选择“模型编辑器”。选择模型类型:在模型编辑器中选择模型类型,如SPICE模型。输入模型参数:根据需要输入模型的参数,如电阻值、电容值等。保存模型。

kkchenjj的博客 1925

LoRa无线通信技术介绍(六)SX127X芯片收发程序讲解

接收LORA芯片SX127X的收发程序。

DT程序员的博客 1752

C++11:基于C++98的语法更新

介绍了c++11中的一些变化以及新的语法。详细阐述了其实现方式和使用场景。

2201_75880188的博客 1206

osgearth添加经纬度网格,并显示鼠标所指经纬高度信息

一、代码 osgearth官方例子 #include <osg/Notify> #include <osgGA/StateSetManipulator> #include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers> #include <osgEarth/MapNode> #include <osgEarthUtil/EarthManipulator> #

ljjjjjjjjjjj的博客 3564

C++ 的史诗级进化:从C++98到C++20

C++ 的史诗级进化:从C++98 - C++20 详解,含示例

不休的博客 1541

【行为决策模块项目实战】解耦控制--多控制器管理与切换的方法(附C++代码)

[请添加图片描述](https://img-blog.csdnimg.cn/c11300d9e4fe421e9070f474a468d1db.jpeg)本文先对多控制器管理与切换的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容VERTICAL_VEL, //垂直速度PID控制器VERTICAL_POS, //垂直位置PID控制器HORIZONTAL, //水平速度PID控制器YAW, //航向角yaw位置逻辑控制器。

qq_35635374的博客 1211

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++ 98/03 应该学习哪些知识15

类型转换方式

clayhell的博客 1078

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++ 98/03 应该学习哪些知识17

内存溢出和内存泄漏

clayhell的博客 1204

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++ 98/03 应该学习哪些知识7

C++ 面向对象语法

clayhell的博客 950

C++ 98/03 应该学习哪些知识6

内存中的栈和堆分配

clayhell的博客 923

C++ 98/03 应该学习哪些知识8

访问限定符 public/protected/private

clayhell的博客 959

C++98&C++11的区别

C++98&C++11的区别 文章目录C++98&C++11的区别1. C++11简介2. 自动类型推导auto3. 列表初始化4. 变量类型推导5. 范围for循环6. 返回类型后置语法7. final和override8. =default和=delete9. lambda表达式10. std::move11. std::array12. std::forward_list13...

wolfGuiDao的博客 9143

【C++ 经典算法】贪心算法求解股票最大利润(兼容 C++98/03)

给定一组连续 N 天的股票价格,只能进行一次 “买入 - 卖出” 操作(买入必须在卖出前),求能获得的最大利润;若价格持续下跌,利润为 0(不交易)。贪心算法以 “局部最优” 的简洁思路,完美解决了 “单次股票买卖最大化利润” 问题,本文实现的版本不仅保留了算法的高性能,还通过 C++98 兼容设计,适配了老旧编译器环境。无论是算法学习、面试刷题,还是实际量化策略开发,该方案都具备极高的参考价值。

2401_88213121的博客 570

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

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。

枫叶丹4的博客 2544

从 C 到 C++:告别面向过程,拥抱对象世界(C++98/03 入门指南)

private: // 私有成员,外部无法直接访问int age;public: // 公有接口void print() const { // const 成员函数,承诺不修改成员cout << "姓名: " << name << ", 年龄: " << age << ", 成绩: " << score << endl;stu.setName("张伟");return 0;structvsclass:在 C++ 中,struct默认成员是publicclass默认是。

xiangyun61的博客 213

C++98 → C++23 各版本特性对比

摘要: 本文系统梳理了C++各版本核心特性,采用对比表格清晰呈现。C++98/03奠定基础(STL、模板、异常处理);C++11实现重大突破(auto、Lambda、移动语义);后续版本持续优化:C++14增强泛型与constexpr,C++17引入结构化绑定与文件系统,C++20带来模块化编程(Concepts、协程),C++23新增错误处理类型与格式化输出。各版本均保持向下兼容,C++11被视为现代C++的里程碑,后续迭代逐步扩展编译期计算与泛型编程能力。

chengjinxuetang的博客 1232

C/C++的标准演进及对应的编译器

因为区别很小,因此,C89和C90通常指同一种语言,与传统C语言K&R标准对比, ANSI/ISO标准C语言的改进了很多。在1999年,C语言的标准化委员会将不断改进的C语言, 收纳为新的标准,官方名称为 ISO/IEC 9899: 1999,简称为 C99 标准,严格上讲是C语言的第二个官方版本,C99 标准引入了许多特性。在1995年,对C89标准作了一个修订与补充,产生了一个C95标准,官方名称为:ISO/IEC 9899:1990/AMD 1:1995,但并不是一个真正的标准,主要改动如下,

魔筝炼药师 1万+
上一篇: C++ 98/03 应该学习哪些知识4
下一篇: C++ 98/03 应该学习哪些知识6
五百五。
博客等级 码龄7年 249粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五百五。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值