C++對C的拓展

 

目錄

 

一、bool類型關鍵字

二、引用

三、輸入輸出

四、函數參數

五、string類

六、左值


一、bool類型關鍵字

C++在C語言的基礎類型上新增了布爾類型(bool),bool可取的值有兩個:true、false,佔用一個字節。true代表真值,編譯器內部用1來表示;false代表非真值,編譯器內部用0來表示。

#include <iostream>
using namespace std;

int main() {
    bool flag = true;
    std::cout << "bool[true] 值:" << flag << std::endl;
    std::cout << "bool佔用字節數:" << sizeof(flag) << std::endl;
    flag = 10;
    std::cout << "修改bool[true]值後,值:" << flag << std::endl;
    
    return 0;
}

輸出:

bool[true] 值:1
bool佔用字節數:1
修改bool[true]值後,值:1

二、引用

在C++中才引入引用類型,它是變量的別名,聲明方法:類型標識符 &引用名 = 目標變量名,表達式用的&不代表取變量的地址,而是用來表示該變量是引用類型的變量,定義一個引用時,一定要對其進行初始化。

#include <iostream>
using namespace std;

void func(int &arg) {
    arg = 14;
}

int main() {
    int a = 11;
    int c = 12;
    int &b = a;
    b = 13;
    std::cout << "a = " << a << ", b = " << b << std::endl;
    std::cout << "before func c = " << c << std::endl;
    func(c);
    std::cout << "after func c = " << c << std::endl;

    return 0;
}

輸出:

a = 13, b = 13
before func c = 12
after func c = 14

 

三、輸入輸出

C語言中輸入輸出是標準的函數scanf()和printf(),而C++中使用流對象作爲輸入輸出,其中cin是標準輸入流對象,即istream類的對象;cout是標準輸出流的對象,即ostream類的對象;cerr是標準錯誤輸出流的對象,也是ostream 類的對象。

四、函數參數

C語言中,函數定義時沒有給定參數或返回類型,默認使用int類型,如:int func()表示接收任意參數的函數;func()表示返回值int的函數。但C++中,所有的標識符必須顯示聲明類型,否則無法通過編譯;其次C++允許函數設置參數默認值。

#include <stdio.h>

int func1() {
    return 1;
}

func2(void) {
    return 2;
}

int main() {
    int func1_ret = func1(23, 43);
    printf("func1 return[%d]\n", func1_ret);
    int func2_ret = func2();
    printf("func2 return[%d]\n", func2_ret);

    return 0;
}

輸出:

func1 return[1]
func2 return[2]

 

#include <iostream>
using namespace std;

int func1() {

    return 1;
}

int func2(int a, int b = 2) {
    std::cout << "a = " << a << ", b = " << b;

    return 0;
}

int main() {
    int a = 1;
    int b = 3;
    std::cout << "func1 return[" << func1() << "]" << std::endl;
    std::cout << "func2 use default param ";
    int ret1 = func2(a);
    std::cout << std::endl;
    std::cout << "func2 use set param ";
    int ret2 = func2(a, b);
    std::cout << std::endl;

    return 0;
}

輸出:

func1 return[1]
func2 use default param a = 1, b = 2
func2 use set param a = 1, b = 3

五、string類

C語言是靜態弱類型語言,類型在編譯時需要確定,對於string類型,由於它的大小無法在編譯時確定,所以C語言中沒有string類型,通過char *和char []可以定義字符串。C++中的string類是一個模板類,位於std命名空間中,使用string類,頭文件必須包含<string>。

#include <iostream>
#include <string>
using namespace std;

int main() {
    std::string mystr("abc");
    std::cout << "mystr:" << mystr << ", size:" << mystr.size() << std::endl;

    return 0;
}

輸出:

mystr:abc, size:3

 

六、左值

左值一定可以作爲右值,但右值不一定可以作爲左值,C語言中表達式不能作爲左值,而C++中只要能建立普通引用的表達式都可以作爲左值。

a > b ? a : b = 10; // 三目運算符返回變量本身,可以作左值

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章