歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

初識C++:最簡單的C++程序

先來寫一個最簡單的C++程序

// helloworld.cpp
#include <iostream>

int main() {
    std::cout << "Hello, Wrold!" << std::endl;
    return 0;
}

這段代碼反應了4個問題:
1.注釋
2.預處理指令
3.main()函數
4.輸入/輸出流

下面主要說一下預處理指令:生成一個C++程序有三步。首先,代碼在預處理器中運行,預處理器會識別代碼中的元信息;隨後,代碼被編譯成計算機可以識別的目標文件;最後,每一個目標文件鏈接在一起就變成了一個應用程序。預處理指令以#字符開始,如#include <iostream>,意思就是告訴預處理器:提取<iostream>頭文件中的所有內容供當前文件使用。<iostream>頭文件聲明了C++提供的輸入/輸入功能,只有程序包含了此頭文件,才能完成程序中想要輸出的Hello,World!文本。

注意:熟悉C的同學都知道頭文件是以.h結尾,比如<stdio.h>。在C++中,標准的頭文件省略了.h後綴,如<iostream>,但仍然包含了C中的標准頭文件,只是換了名字,比如原來的<stdio.h>變成了<cstdio>。

預處理指令還有#define、#ifdef、#ifndef、#endif等。例如:

#ifndef MYHEADER_H
#define MYHEADER_H
// ...
#endif

這是為了避免重復包含頭文件的示例。

這裡要提到的是,如果編譯器支持#pragma once指令,則可以使用此指令代替上面的指令:

#pragma once
// ...

接下來簡單說一下std::語法:std::endl代表輸出流的結尾,會換行,如同\n字符。::被稱為作用域解析運算符,std指的是命名空間,他們合起來使用是為了解決不同代碼段之間的名稱沖突問題。例如我編寫了一段代碼,其中定義了一個fun()函數,然而在某天,我使用了第三方庫,裡面恰好也定義了一個fun()函數,那麼編譯器則無法判斷代碼中調用的fun()函數到底屬於哪個版本。因此我需要將自己的代碼放到一個命名空間中,首先定義命名空間:

namespace mycode {
    void fun();
}

當我使用fun()函數的時候,需要指明其命名空間,有兩種方法:

using namespace mycode;

int main() {
    fun();  // 調用的是我自己定義的fun()函數       
    return 0;
}

或者:

int main() {
    mycode::fun();  // 調用的是我自定義的fun()函數
    return 0;
}

現在就明白,cout輸出流是屬於std命名空間中的,所以寫成std::cout。順便提一下,輸入流cin也是屬於std命名空間中,至於使用方法,在此就不多提了。

Copyright © Linux教程網 All Rights Reserved