zoukankan      html  css  js  c++  java
  • 了解C语言,是否代表了解C ++的一半?

    C语言几十年来一直是软件开发的一种主力语言,如果我学习了C语言,这是否意味着我至少了解C ++的50%?

    您已经有了答案。不,你没有。


     

    我想向您展示另一个方面。在编程语言设计中,我们谈论正交特征。这意味着特征会打开一个正交尺寸,这意味着您可以将新特征与现有特征结合。OOP不是一个新的维度。这只是一种适用于所有语言的设计模式。如果您完全了解C,那么使用C进行OOP就没有问题。因此,您应该熟悉类和数据的隐藏和继承,多重继承和虚拟继承。多数民众赞成在只是偶然的。C在这里不支持您,但是所有这些都可以用C来表示。运算符重载和命名空间是一个很大的帮助,但是您也可以使用C来管理它。因此,具有完善的C知识,您将成为一名优秀的Java或C#开发人员(甚至更好),并且您将享受这些语言所提供的支持,并且讨厌他们要求您提供的限制。您还将享受C ++在此方面为您提供的支持。您将不受限制。

    但是模板不能用C.,C#或Java表示他们很强大。

    如果整个C是一个维,包括OOP和其他所有内容,则可以执行程序1,另一个2和另一个3,依此类推,您拥有无限的可能性。

    现在,假设您添加了另一个维度,例如“模板”。您已经知道C,所以现在您的三个程序分别是(0,1),(0,2)和(0,3)。

    在C语言中,您可以使用几种数据类型的数据来评估表达式。在C ++中,您可以计算不带数据的表达式,您可以评估数据类型并使用预先计算的属性和功能构造新的数据类型。

    因此,现在您还可以开发软件(1,1),(1,2),(1,3)和(2,1),(2,2),(2,3)和(3,1), (3,2),(3,3)。还有(4,1),(4,2),(4,3)…

    有了新的维度,您的可能性不仅会加倍,而且还会不断增加。您的可能性仍然是无限的,但您的表现力却是平方。


     

    在C中,您可以编写将函数作为参数并返回结果作为函数的函数。

    在C ++中,您可以编写将模板作为参数并评估新模板的模板。这使您可以将编译时间用作运行时间。您可以通过编写创建解决方案的模板算法来在编译时创建解决方案。这称为模板元编程。

    您还可以创建模板,这些模板可以在运行时调用的编译时创建优化的函数。在最佳情况下,您可以完全删除该功能。

    想象一下一个操作两个整数的程序。在C中,您可以调用以下函数:

    结果= add(1,2);

    在C ++中,您可以编写一个模板:

    结果= add <1,2> :: value;

    “结果”将相同。但是C ++版本不需要任何CPU功能。它将在编译时进行评估。add是一个模板,

    根据其参数生成数据类型。结果将是具有值为3的静态常量“值”的数据类型。因此,在运行时没有函数调用,只是将常量值3分配给结果:

    结果= 3;

    想象一下,您需要一组精心设计的预先计算的值。我会在编译时预先计算它们,而您必须在运行时预先计算它们。您必须手动执行此操作。我有一种语言可以在其中编写程序。如果算法更改,我将更改算法。您必须重复所有计算。

    我甚至可以编写一个程序来编写程序,然后再编写程序。

    一个例子:我的一位朋友在一家CAD公司工作。我们提供2D和3D软件。因此,我们在2d中有生成点,在3d 中也有生成点。以及每个尺寸的线段和多边形等。

    Polygon2d p;

    Polygon3d q;

    他改写了。现在他们有了模板,可以在2d和3d中生成点和所有其他尺寸。

    多边形2 p;

    多边形<3> q;

    多边形<4> r;

    对于模板,数据类型Polygon具有参数。

    该代码变得更少,更一致,测试更多。使用模板编程更容易出错,冗余更少,更快。

    因此,在您必须知道一个维度之前:一条线。您可以从0到100%完美地走这条线。这条线非常重要。所有运行时软件都遵循这一原则。但是现在您有了一个区域,只知道该区域中的一条线。现在,您可以编写创建所需软件的软件。

    现在,您需要在从未被视为C,C#或Java开发人员的领域获得经验。

    因此,了解C语言未必就意味着了解C++的一半,就好比您上了大学就未必都能知道高中的知识。这只是将方向更改为新的维度,您只能重新开始学习。但是,您对该领域的了解越多,您就越有能力成为一名有潜力的开发人员,并且能够思考在C,C#或Java中无法表达甚至无法考虑的解决方案。

    今天就讲到这里啦,大家记得点赞收藏,分享转发,关注小姐姐哦!


     
  • 相关阅读:
    事务的隔离级别
    常用linux命令
    cpu.load avg和cpu使用率的区别
    【Leetcode】55. Jump Game
    【Leetcode】322. coin-change
    34.find-first-and-last-position-of-element-in-sorted-array
    【LeetCode】56.merge-intervals
    Leetcode】210.course-schedule-ii
    基于Thread实现自己的定时器Timer
    Boost--内存管理--(1)智能指针
  • 原文地址:https://www.cnblogs.com/mu-ge/p/13651348.html
Copyright © 2011-2022 走看看