📜  C++的功能

📅  最后修改于: 2021-05-30 06:44:45             🧑  作者: Mango

C++是一种通用编程语言,是对C语言的增强而开发的,以包括面向对象的范例。这是一种命令式语言,也是一种编译语言。

面向对象的程序设计

C++是一种面向对象的编程语言,与C是一种过程编程语言不同。这是C++最重要的功能。它可以在编程时创建/销毁对象。而且,它可以创建可用来创建对象的蓝图。我们已经在本文中讨论了C++中的面向对象编程概念。

面向对象编程语言的概念:

  • 班级
  • 对象
  • 封装形式
  • 多态性
  • 遗产
  • 抽象化

机器无关

C++可执行文件不是独立于平台的(Linux上的编译程序无法在Windows上运行),但是它们是与计算机无关的。

让我们借助示例来了解C++的此功能。假设您编写了一段可以在Linux / Windows / Mac OSx上运行的代码,这使C++计算机独立,但是C++的可执行文件不能在不同的操作系统上运行。

简单的

它是一种简单的语言,可以将程序分解为逻辑单元和部分,具有丰富的库支持以及各种数据类型。另外,C++的自动关键字使生活更轻松。

自动关键字

auto的想法是在编译时形成C++编译器来推断数据类型,而不是让您每次都在声明数据类型。请记住,没有初始化程序就无法声明某些内容。编译器必须有某种方式来推断您的类型。

C++
// C++ program for usin auto keyword
  
#include 
using namespace std;
  
// Driver Code
int main()
{
  
    // Variables
    auto an_int = 26;
    auto a_bool = false;
    auto a_float = 26.24;
    auto ptr = &a_float;
  
    // Print typeid
    cout << typeid(a_bool).name() << "\n";
    cout << typeid(an_int).name() << "\n";
    return 0;
}


C++
// C++ implementation to illustrate
// the Memory Management
  
#include 
#include 
using namespace std;
  
// Driver Code
int main()
{
    int num = 5;
    float* ptr;
  
    // Memory allocation of
    // num number of floats
    ptr = new float[num];
  
    for (int i = 0; i < num; ++i) {
        *(ptr + i) = i;
    }
  
    cout << "Display the GPA of students:"
         << endl;
    for (int i = 0; i < num; ++i) {
  
        cout << "Student" << i + 1
             << ": " << *(ptr + i)
             << endl;
    }
  
    // Ptr memory is released
    delete[] ptr;
  
    return 0;
}


C++
// C++ implementation to illustrate
// the working of Multi-threading
  
#include 
#include 
#include 
  
using namespace std;
  
#define NUM_THREADS 5
  
// Function to print Hello with
// the thread id
void* PrintHello(void* threadid)
{
    // Thread ID
    long tid;
    tid = (long)threadid;
  
    // Print the thread ID
    cout << "Hello World! Thread ID, "
         << tid << endl;
  
    pthread_exit(NULL);
}
  
// Driver Code
int main()
{
  
    // Create thread
    pthread_t threads[NUM_THREADS];
    int rc;
    int i;
  
    for (i = 0; i < NUM_THREADS; i++) {
  
        cout << "main() : creating thread, "
             << i << endl;
  
        rc = pthread_create(&threads[i],
                            NULL,
                            PrintHello,
                            (void*)&i);
  
        // If thread is not created
        if (rc) {
            cout << "Error:unable to"
                 << " create thread, "
                 << rc << endl;
  
            exit(-1);
        }
    }
  
    pthread_exit(NULL);
}


输出:
b
i

高级语言

C++是高级语言,而C是中级编程语言。它是一种高级语言,因为它与人类可理解的英语语言紧密相关,因此它使使用C++的工作变得更加轻松。

受欢迎的

C++可以是许多其他支持面向对象编程功能的编程语言的基础语言。 Bjarne Stroustrup找到了Simula 67,这是有史以来的第一种面向对象的语言,缺乏仿真,因此决定开发C++。

区分大小写

显然,C++是区分大小写的编程语言。例如, cin用于从输入流中获取输入。但是,如果“ Cin”不起作用。 HTML和MySQL等其他语言也不区分大小写。

基于编译器

与Python不同,C++是一种基于编译器的语言。也就是说,C++程序曾经被编译,其可执行文件用于运行它。因此,C++是比Java和Python相对更快的语言。

动态内存分配

当程序在C++中执行时,将为变量分配动态堆空间。在函数内部,变量在堆栈空间中分配。很多时候,我们事先并不知道需要多少内存才能将特定信息存储在已定义的变量中,并且可以在运行时确定所需内存的大小。

内存管理

  • C++允许我们在运行时分配变量或数组的内存。这称为动态内存分配。
  • 在其他编程语言(例如Java和Python,编译器自动管理分配给变量的内存。但这不是C++中的情况。
  • 在C++中,在无用的情况下,必须手动取消分配动态分配的内存。
  • 可以分别在new和delete运算符完成内存的分配和释放。

下面是说明C++中的内存管理的程序:

C++

// C++ implementation to illustrate
// the Memory Management
  
#include 
#include 
using namespace std;
  
// Driver Code
int main()
{
    int num = 5;
    float* ptr;
  
    // Memory allocation of
    // num number of floats
    ptr = new float[num];
  
    for (int i = 0; i < num; ++i) {
        *(ptr + i) = i;
    }
  
    cout << "Display the GPA of students:"
         << endl;
    for (int i = 0; i < num; ++i) {
  
        cout << "Student" << i + 1
             << ": " << *(ptr + i)
             << endl;
    }
  
    // Ptr memory is released
    delete[] ptr;
  
    return 0;
}
输出:
Display the GPA of students:
Student1: 0
Student2: 1
Student3: 2
Student4: 3
Student5: 4

多线程

  • 多线程是多任务的一种特殊形式,多任务是一种功能,它允许您的系统同时执行两个或多个程序。通常,多任务处理有两种:基于进程的和基于线程的。
  • 基于进程的多任务处理程序的并发执行。基于线程的多任务处理同等程序的各个部分的多重编程。
  • 多线程程序包含两个或多个将同时运行的部分。此类程序的每个部分都称为一个线程,并且每个线程都定义了单独的执行路径。
  • C++不包含对多线程应用程序的任何内置支持。相反,它完全依赖于OS来提供此功能。

下面是说明C++中多线程的程序:

C++

// C++ implementation to illustrate
// the working of Multi-threading
  
#include 
#include 
#include 
  
using namespace std;
  
#define NUM_THREADS 5
  
// Function to print Hello with
// the thread id
void* PrintHello(void* threadid)
{
    // Thread ID
    long tid;
    tid = (long)threadid;
  
    // Print the thread ID
    cout << "Hello World! Thread ID, "
         << tid << endl;
  
    pthread_exit(NULL);
}
  
// Driver Code
int main()
{
  
    // Create thread
    pthread_t threads[NUM_THREADS];
    int rc;
    int i;
  
    for (i = 0; i < NUM_THREADS; i++) {
  
        cout << "main() : creating thread, "
             << i << endl;
  
        rc = pthread_create(&threads[i],
                            NULL,
                            PrintHello,
                            (void*)&i);
  
        // If thread is not created
        if (rc) {
            cout << "Error:unable to"
                 << " create thread, "
                 << rc << endl;
  
            exit(-1);
        }
    }
  
    pthread_exit(NULL);
}

输出:

本教程假定您正在Linux OS上工作,并且我们将使用POSIX编写多线程C++程序。 POSIX线程或Pthreads提供了许多类似Unix的POSIX系统(例如FreeBSD,NetBSD,GNU / Linux,Mac OS X和Solaris)上可用的API。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”