騰訊首席技術架構教你從C語言過渡到C++,真的很實用!

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
說到C++和C語言的區別,大部分人都會想到面向對象和麪向過程。然而這種說法並不許確。面向對象和麪向過程指的是兩種不一樣的程序設計思想,而C++與C是兩種編程語言,難道C++就不能用於面向過程去解決問題嗎,固然能夠。而面向對象的設計思想也能夠用到C語言中去,我以前的文章就涉及過這方面的知識。
最後,若是你們若是在自學遇到困難,想找一個C++的學習環境,能夠加入咱們的C++學習圈,點擊我加入吧,會節約不少時間,減小不少在學習中遇到的難題。
圖片描述ios

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
咱們這個系列就是要拋開編程思想,單純地從語法的角度介紹一下C++中究竟加入了哪些C語言中沒有的功能。但願你們在掌握了C語言以後再來學習這部份內容。程序員

首先,讓咱們看一段標準的C++代碼:編程

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
這個是一個最基本的程序,用來在屏幕上打印出「Hello World」這句話。是否是和C語言程序差距較大呢?今天,咱們先介紹C++和C語言的幾個最基本的不一樣。架構

  1. 頭文件

C語言中,標準輸入輸出的頭文件引用方式以下:編程語言

include <stdio.h>

而C++中使用的是:函數

include <iostream>

C++規定,由系統提供的頭文件在引用時不帶「.h」。若是是本身定義的頭文件,須要這樣引用:學習

include "myfile.h"

注意,這裏不只使用了「.h」並且還用了雙引號。緣由和C語言相同,從當前路徑開始尋找。另外,因爲C++是徹底支持C語言的所有功能的,因此當咱們要使用C語言提供的頭文件時,依然要使用:spa

include <stdio.h>

這樣定義的好處是,咱們只看頭文件的包含形式就知道引用的是C++的系統庫仍是C語言的系統庫,亦或是自定義函數庫。設計

  1. 命名空間

你們確定注意到這句話了:調試

using namespace std;

這句話的意思是引入命名空間std,咱們輸出字符串使用的cout關鍵字就在std中。C++庫中的函數被劃分到不一樣的命名空間中,若是須要訪問,就要先使用這句話引入命名空間。

假如咱們沒有寫這句話,就要在每次使用到這些函數時手動指定命名空間,以前的代碼就要變成這樣:

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
這樣寫是合法的,只不過有些麻煩。

  1. C++的輸入輸出

C++的輸入輸出作了較大的修改,咱們先看下面這個例子:

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
這個程序實現了輸入兩個數字,以後把它們打印在屏幕上。程序的執行結果以下:

cin

至關於scanf,用於把輸入的字符保存在後面的變量中。cin必須和>>一塊兒使用,須要輸入幾個變量就寫幾個變量,之間用>>分隔開。

cout

至關於printf,用於把字符串或變量打印在屏幕上。須要打印的元素要用<<分隔開,endl表示換行。

這兩個關鍵字最大的優點是不須要關注變量的數據類型,C++會根據變量的定義自動匹配合適的數據類型。

使用這兩個關鍵字時必須包含<iostream>這個庫。

  1. 變量的定義

C語言中有個被不少人詬病的規定是變量的定義必須放在代碼塊的首部。這樣就會常常出現變量的定義和第一次使用之間距離很遠,好比下面這段代碼。

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
這段代碼中,變量i的聲明和第一次使用之間可能隔了幾十行的代碼。這樣嚴重影響了代碼的可讀性,也提升了調試的成本。

在C++中,這種狀況本根本地解決了。C++容許在任何地方定義變量,只要在使用它以前就行。因而就有了這樣的寫法:

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!
這樣寫是否是變得很是清楚了。在C++中,咱們習慣在使用變量時定義,不少只會用C語言的程序員也在使用.cpp文件寫代碼就是爲了有這麼一個便利條件。

  1. 必定要先學C再學C++嗎

雖然我是帶你們先學C語言再學C++的,不少程序員也都是走的這個學習路線。但並非必定要先學C再學C++。

我老是用這麼個例子來解釋這個問題。C和C++就彷彿是手動擋和自動擋的區別,雖然咱們大部分人都是先學手動擋再學自動擋,但並不能說不會開手動擋的人就學不會自動擋。自動擋其實還更好學一些。對於駕駛這兩種車而言,它們有不少相同的部分,好比打方向的方法、踩油門和剎車的方法、打轉向燈的方法、轉彎併線等等這些要點都是相同的,只不過你先學哪一個就在那裏學習這些公共部分而已。

C和C++也是同樣,80%以上的語法點都是相同的,而這些語法點你是經過哪一種語言學會的沒有任何區別。

大部分學校安排課程的時候都是先學C再學C++,由於C更關注細節,可以幫助學生更清晰地瞭解程序和硬件的一些關係,人們認爲只要這麼學才能打下好的基礎。但隨着計算機編程技術的不斷髮展,現在更流行的觀點是編程就是爲了幫助咱們更好地使用計算機解決問題,以這個目的爲導向,那些不必知道的東西能夠不去在乎。因而愈來愈多的人用C++、Java、甚至Python這樣遠離硬件的語言進行編程入門。這些人依然能夠設計出本身想要的程序。

因此,請你們不要再糾結先學誰後學誰的問題了,可能不久後,我就會推出從零開始學習C++這樣的系列了。

敬請期待~

騰訊首席技術架構教你從C語言過渡到C++,真的很實用!

相關文章
相關標籤/搜索