C++基础教程修仙版

在神秘的编程世界中,C++犹如一门高深的仙法,一旦掌握,便能在代码的江湖中呼风唤雨,创造出惊人的奇迹。让我们从零开始,一同踏上这奇妙的C++修仙之旅。

 

一、C++的神秘起源

C++诞生于编程世界的混沌之初,它由古老而强大的C语言进化而来。融合了面向对象编程(OOP)、泛型编程等神奇力量,成为了编程领域中独树一帜的秘籍。

二、修炼环境搭建

 

1. Visual Studio

- 这是微软精心打造的修炼圣地,功能强大,对Windows平台的修行者十分友好。

- 前往微软的官方网站(Visual Studio),根据提示下载适合您的版本,然后按照安装向导逐步操作,即可开启修炼之路。

2. GCC

- 在Linux和macOS的神秘领域,GCC是备受推崇的修炼法宝。

- 对于Linux系统,打开终端,输入相应的命令进行安装,如在Ubuntu系统中,可使用“sudo apt-get install gcc”。在macOS上,若您已安装了Homebrew,可通过“brew install gcc”来获取。

3. Code::Blocks

- 这是一款轻便且跨平台的法宝,安装和使用都相对简单。

- 访问其官方网站(Code::Blocks),下载对应您操作系统的版本,然后按照安装指示进行操作即可。

 

三、基础仙法秘籍

 

1. 变量与数据类型

 

- 在C++的世界里,数据类型如同各种神奇的法宝,各具特色。

- 整数类型(如短整型 short 、整型 int 、长整型 long ):是用于存储整数的基本法宝。

 

short num_short = 10;  // 短整型,通常能存储较小范围的整数
int num_int = 100;    // 整型,常见的整数存储类型
long num_long = 1000; // 长整型,可存储更大范围的整数

- 浮点数类型(单精度浮点数 float 、双精度浮点数 double ):用于处理带有小数的数值。

 

float num_float = 3.14f; // 单精度浮点数,精度相对较低

double num_double = 3.14159; // 双精度浮点数,精度更高

 

- 字符类型 char :能容纳单个字符,就像一个小巧的字符法宝。

 

char character = 'A';

 

- 布尔类型 bool :只有 true (真)和 false (假)两种状态,如同判断是非的神秘法宝。

 

bool is_true = true;

 

- 变量就像您的专属储物袋,使用前要先声明,并赋予初始值。

 

int count = 0; // 声明一个整型变量count,并初始化为0

2. 操作符与表达式

 

- 算术操作符( + 、 - 、 * 、 / 、 % ):就像施展不同法术的手势,进行加减乘除和取模运算。

 

int result = 10 + 5; // 加法运算

int remainder = 10 % 3; // 取模运算,得到除法的余数

 

- 关系操作符( > 、 < 、 >= 、 <= 、 == 、 != ):用于比较数值大小和是否相等。

 

bool is_greater = 10 > 5; // 判断10是否大于5

 

- 逻辑操作符( && 、 || 、 ! ):帮助您在复杂的状况下做出明智判断。

 

bool both_true = (10 > 5) && (20 > 15); // 逻辑与,两个条件都为真时结果为真

bool either_true = (10 > 5) || (20 < 15); // 逻辑或,至少一个条件为真时结果为真

bool not_true =!(10 > 5); // 逻辑非,取反操作

 

- 表达式的计算遵循一定的优先级和结合性,就像法术施展的先后顺序和规则。

3. 控制流仙术

 

- 顺序结构:按部就班,依次执行代码。

- 选择结构:

-  if-else 仙术:根据条件决定执行的路径。

 

int num = 10;

if (num > 5) {

    std::cout << "Number is greater than 5" << std::endl;

} else {

    std::cout << "Number is not greater than 5" << std::endl;

}

 

-  switch 仙术:针对多个离散的条件进行选择。

 

int day = 2;

switch (day) {

    case 1:

        std::cout << "Monday" << std::endl;

        break;

    case 2:

        std::cout << "Tuesday" << std::endl;

        break;

    default:

        std::cout << "Unknown day" << std::endl;

}

 

- 循环结构:

-  for 仙术:当明确知道循环次数时使用。

 

for (int i = 0; i < 5; i++) {

    std::cout << i << std::endl;

}

 

-  while 仙术:只要条件为真,就持续循环。

 

int count = 0;

while (count < 5) {

    std::cout << count << std::endl;

    count++;

}

 

-  do-while 仙术:先执行一次循环体,然后再判断条件。

 

int num = 0;

do {

    std::cout << num << std::endl;

    num++;

} while (num < 5);

 

 

四、神奇的函数仙法

 

1. 函数的定义

- 函数就像您自创的独门秘籍,由返回类型、函数名、参数列表和函数体组成。

 

int add(int a, int b) { // 返回类型为int,函数名为add,有两个整型参数a和b

    return a + b;

}

 

2. 函数的调用

- 通过喊出函数名并提供相应的参数来施展秘籍。

 

int result = add(3, 5); // 调用add函数,将3和5作为参数传递,得到结果并存储在result中

 

3. 函数的重载

- 可以创建多个同名但参数不同的函数,根据传入的参数自动匹配相应的函数。

 

int multiply(int a, int b) {

    return a * b;

}

 

double multiply(double a, double b) {

    return a * b;

}

 

五、数组法宝

 

1. 一维数组

- 声明方式如同打造一个有序的储物空间。

 

int arr[5]; // 创建一个能容纳5个整数的数组

 

- 通过索引(从0开始)访问数组中的元素。

 

arr[0] = 1; // 给数组的第一个元素赋值为1

 

- 初始化数组时可以在声明时直接赋值。

 

int arr[5] = {1, 2, 3, 4, 5};

 

2. 多维数组

- 二维数组就像多个一维数组堆叠而成。

 

int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};

 

 

 

 

 

六、神秘的指针仙术

 

1. 指针的定义和使用

- 指针就像指向神秘宝藏的魔法指针,存储着变量的地址。

 

int num = 10;

int *ptr = &num; // 声明一个指向整型的指针ptr,并将num的地址赋给它

 

- 通过解引用操作( * )获取指针所指向的值。

 

std::cout << *ptr << std::endl; // 输出指针ptr所指向的num的值

 

2. 指针与数组的关系

- 数组名在很多情况下会被视为指向数组首元素的指针。

 

int arr[5] = {1, 2, 3, 4, 5};

int *ptr = arr;

for (int i = 0; i < 5; i++) {

    std::cout << *(ptr + i) << " ";

}

 

 

七、结构体的神秘力量

 

1. 结构体的定义

- 结构体是将不同类型的法宝组合在一起的神奇套装。

 

struct Student {

    std::string name;

    int age;

    float score;

};

 

2. 结构体的使用

- 先声明结构体变量,然后就可以操作其中的成员。

 

Student stu;

stu.name = "Alice";

stu.age = 20;

stu.score = 90.5;

 

 

八、类和对象的修仙之道

 

1. 类的定义

- 类就像一个定制的修仙秘籍,封装了数据和操作这些数据的方法。

 

class Box {

private:

    double length;

    double breadth;

    double height;

public:

    void setLength(double len) {

        length = len;

    }

    double getLength() {

        return length;

    }

    // 类似地定义 setBreadth、getBreadth、setHeight、getHeight 方法

};

 

- 分为私有(private)、公有(public)和保护(protected)区域,不同区域有不同的访问权限。

2. 对象的创建和使用

- 通过类创建对象,就像依据秘籍修炼出实体。

 

Box myBox;

myBox.setLength(5.0);

double len = myBox.getLength();

 

 

九、继承与多态的高深仙法

 

1. 继承

- 继承使子类能够继承父类的属性和方法,快速获得强大的能力。

 

class Vehicle {

public:

    void honk() {

        std::cout << "Honk! Honk!" << std::endl;

    }

};

 

class Car : public Vehicle {

};

 

- 公有(public)、私有(private)和保护(protected)继承方式决定了继承的内容和权限。

2. 多态

- 多态让不同的对象对相同的消息有不同的响应,如同神奇的变幻之术。

 

class Animal {

public:

    virtual void makeSound() {

        std::cout << "Animal makes a sound" << std::endl;

    }

};

 

class Dog : public Animal {

public:

    void makeSound() override {

        std::cout << "Woof! Woof!" << std::endl;

    }

};

 

 

十、模板的神奇力量

 

1. 函数模板

- 函数模板是通用的法术模板,能根据不同类型生成具体的函数。

 

template <typename T>

T add(T a, T b) {

    return a + b;

}

 

2. 类模板

- 类模板可以创建不同类型的神奇法宝类。

 

十一、异常处理的护身仙法

 

1. 异常的抛出

- 当遇到危险状况时,使用 throw 抛出异常信号。

 

void divide(int a, int b) {

    if (b == 0) {

        throw "Division by zero!";

    }

    int result = a / b;

    std::cout << "Result: " << result << std::endl;

}

 

2. 异常的捕获

- 运用 try-catch 仙法来捕捉和处理异常,保护自己免受伤害。

 

try {

    divide(10, 0);

} catch (const char* msg) {

    std::cerr << "Exception: " << msg << std::endl;

}

 

 

十二、文件操作的神秘法术

 

1. 文本文件的读写

- 使用 ofstream 类进行文件写入, ifstream 类进行文件读取。

 

// 写入文件

std::ofstream outFile("example.txt");

if (outFile.is_open()) {

    outFile << "Hello, World!" << std::endl;

    outFile.close();

} else {

    std::cout << "Unable to open file for writing" << std::endl;

}

 

// 读取文件

std::ifstream inFile("example.txt");

if (inFile.is_open()) {

    std::string line;

    while (getline(inFile, line)) {

        std::cout << line << std::endl;

    }

    inFile.close();

} else {

    std::cout << "Unable to open file for reading" << std::endl;

}

 

2. 二进制文件的读写

- 对于神秘的二进制文件,可以使用 fstream 类以特殊方式进行读写。

 

亲爱的小白修仙者,至此您已初步了解了C++的基础仙法。但修仙之路漫长且充满挑战,唯有不断实践和探索,才能真正掌握这门强大的仙法,创造出属于您的编程传奇!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值