Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';C和C的区别是什么+; 我知道C++有对象的概念,但是C没有。我也知道,几乎所有的东西都知道C适合,但是C++库更复杂。不过,肯定还有其他重大差异 < C和C++之间的主要区别是什么? < P>我想你回答了你自己的问题:课堂< /P>_C++_C - Fatal编程技术网

什么';C和C的区别是什么+; 我知道C++有对象的概念,但是C没有。我也知道,几乎所有的东西都知道C适合,但是C++库更复杂。不过,肯定还有其他重大差异 < C和C++之间的主要区别是什么? < P>我想你回答了你自己的问题:课堂< /P>

什么';C和C的区别是什么+; 我知道C++有对象的概念,但是C没有。我也知道,几乎所有的东西都知道C适合,但是C++库更复杂。不过,肯定还有其他重大差异 < C和C++之间的主要区别是什么? < P>我想你回答了你自己的问题:课堂< /P>,c++,c,C++,C,这是一个完全不同的设计范式。我认为混淆是因为很多人开发了C++程序,这些程序基本上是C程序,甚至没有实现。p> 用创造者的话来说,这允许Stroustrup: 编辑:添加了一些其他有趣的东西< p> C++语言说它们是相同的: int C = 0; assert(C++ == C); 查看Stroustrup的常见问题,具体如下: 强> C与C++有什么区别?< /强> C++是C语言的直接后代,它 保留几乎所有的C作为子集。 C++提供更强的类型检查 比C和直接支持更广泛的 比C

这是一个完全不同的设计范式。我认为混淆是因为很多人开发了C++程序,这些程序基本上是C程序,甚至没有实现。p> 用创造者的话来说,这允许Stroustrup:


<>编辑:添加了一些其他有趣的东西

< p> C++语言说它们是相同的:

int C = 0;
assert(C++ == C);

查看Stroustrup的常见问题,具体如下:

<>强> C与C++有什么区别?< /强>

C++是C语言的直接后代,它 保留几乎所有的C作为子集。 C++提供更强的类型检查 比C和直接支持更广泛的 比C语言更广泛的编程风格。 在这个意义上,C++是“更好的C”。 它支持编程风格 使用C完成了更好的类型检查 以及更多的符号支持(无需 效率损失)。同时 从某种意义上说,ANSIC是一个比K&R更好的C 此外,C++支持数据 抽象,面向对象 编程和泛型编程 (参见C++编程语言(第三) 附录B 兼容性问题可供选择 下载)


模板是另一个很大的区别(除了类/对象之外)。模板支持例如类型安全的通用容器类型(它们的第一个用例)和(bastardized)lambda表达式(
boost::lambda


C++是一种比C大得多的语言(不仅仅是库)。

这个问题没有简单的答案。
一般C++支持:
-面向对象的范例;
-通用程序设计;
-模板编程;
-抽象数据类型;
-新的库和标准支持功能范例的元素;
-使您的程序最受支持的其他工具;
也可以编写C类风格的程序,但是使用C++编译器;


但是纯C——比C++更慢,更低的级别。

< P>简而言之,C渴望成为一个“可移植汇编语言”。它使事情简单,让你做几乎直接映射到底层硬件的事情,并且不存在很多高级抽象(你有函数和……) C++试图成为一切。高级语言、低级语言、面向对象语言、多范式语言、系统编程语言、嵌入式编程语言和应用程序开发语言


这两种语言在某些语法上没有什么共同之处,除了C语言,C++程序只需稍加改动就可以编译成C++,但与“适当”没有任何共同之处。C++语言编写的语言。

< P>另一个C++的C语言是以抛出的形式处理异常。捕获。

C++比C更适合于类。C++中有许多其他概念,如模板、函数和运算符重载、异常以及许多其他已经在这里提到的概念。这使得C++非常强大和灵活,但也很难学习。不是单个概念难以理解,而是它们的总和以及它们是如何在一起发挥作用的。看一下Boost,看看什么东西都可以用C++做。我想理解引擎盖下发生的事情需要很长时间,这在C


<>或者简单地说:C++比C++更像C,或者说C++比java加内存管理要多得多。

< p>这是一个显示C和C++之间的“不兼容”的网站:

<>实际上有很多区域C和C++有差异(除了类、模板、异常等)。 至于主要的区别,这里有一个列表很好地涵盖了这一点:

  • 匿名工会
  • 班级
  • 构造函数和析构函数
  • 异常和try/catch块
  • 外部功能链接(例如外部“C”)
  • 函数重载
  • 成员函数
  • 名称空间
  • 新建和删除运算符和函数
  • 运算符重载
  • 参考类型
  • 标准模板库(STL)
  • 模板类
  • 模板函数
在第1部分(共2部分)中,列出了一些非OOP差异:

  • 函数的默认参数
  • 函数重载
  • 您可以在代码中任何需要的地方声明局部变量,而不仅仅是在函数的开头(也是C99特性)
  • 参考,如
    int&x
  • 常量正确性
  • 名称空间
  • 内置布尔类型,
    bool
    ,带有
    true
    false
    关键字(也在C99中通过stdbool.h)
  • 内联关键字和相关的怪癖,包括隐式内联和自动内联
  • 比C大得多的标准库

<> C++是C++的扩展,最初C++被称为“C,<强>类< /St>”,突出了主要的原语言扩展。当时已经支持函数的重载。此后,C++获得了<>强>异常<强>,层次>强>命名空间< /强>,泛型编程采用<强>模板< /强>,最后是强>多线程<强>支持。从C++11开始,对于垃圾收集也有一些最低限度的核心语言支持,例如使用。较小的扩展包括引用类型、尾部函数返回类型语法、可重写的内存分配和释放机制、运行时类型信息 C99 C++11 _Bool _Complex _Imaginary alignas alignof asm auto auto bool break break case case catch char char char16_t char32_t class const const const_cast constexpr continue continue decltype default default delete do do double double dynamic_cast else else enum enum explicit export extern extern false float float for for friend goto goto if if inline inline int int long long mutable namespace new noexcept nullptr operator private protected public register register reinterpret_cast restrict return return short short signed signed sizeof sizeof static static static_assert static_cast struct struct switch switch template this thread_local throw true try typedef typedef typeid typename union union unsigned unsigned using virtual void void volatile volatile wchar_t while while
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <string>
using namespace std;

#define ITEMS_OF( c )   c.begin(), c.end()

enum class Language { c, cpp };

auto compare( Language const a, Language const b )
    -> int
{ return int( a ) - int( b ); }

struct Keyword
{
    string      word;
    Language    language;

    friend
    auto operator<( Keyword const& a, Keyword const& b )
        -> bool
    {
        if( int const r = a.word.compare( b.word ) ) { return (r < 0); }
        return (compare( a.language, b.language ) < 0);
    }
};

void add_words_from(
    string const& filename, Language const language, vector< Keyword >& words
    )
{
    ifstream            f( filename );
    string              word;

    while( getline( f, word ) )
    {
        words.push_back( Keyword{word, language} );
    }
}

auto main() -> int
{
    vector< Keyword >   words;
    add_words_from( "kwc.txt", Language::c, words );
    add_words_from( "kwcpp.txt", Language::cpp, words );
    sort( ITEMS_OF( words ) );

    int const w = 20;

    int previous_column = -1;
    string previous_word = "";
    cout << left;
    for( Keyword const& kw : words )
    {
        int const column = (int) kw.language;
        int const column_advance = column - (previous_column + 1);
        if( column_advance < 0 || previous_word != kw.word )
        {
            cout << endl;
            if( column > 0 ) { cout << setw( w*column ) << ""; }
        }
        else
        {
            cout << setw( w*column_advance ) << "";
        }
        cout << setw( w ) << kw.word;
        previous_column = column; previous_word = kw.word;
    }
    cout << endl;
}