为了账号安全,请及时绑定邮箱和手机立即绑定

C++11语法学习:从入门到实践的简单教程

标签:
C++
概述

本文提供了全面的C++11语法学习指南,涵盖了从基础语法到高级特性,包括变量声明、常量定义、数据类型、控制结构和面向对象编程等内容。此外,文章还介绍了C++11的新特性,如自动类型推导和智能指针,帮助读者更好地理解和使用C++语言。通过实践示例和代码讲解,读者可以深入掌握C++11语法。

C++11语法学习:从入门到实践的简单教程
C++11基础语法入门

变量声明与初始化

在C++中,使用int, float, char等关键字来声明基本数据类型。变量声明时需要指定类型,同时可以立即进行初始化。

int age = 25; // 定义整型变量 age 并初始化为 25
float price = 9.99; // 定义浮点型变量 price 并初始化为 9.99
char grade = 'A'; // 定义字符型变量 grade 并初始化为 'A'

常量定义

常量的定义使用关键字const。一旦定义了常量,就不能改变其值。

const int MAX_VALUE = 100; // 定义一个整型常量 MAX_VALUE 为 100
const float PI = 3.14159; // 定义一个浮点常量 PI 为 3.14159

基本数据类型

C++ 提供了几种基本的数据类型,包括整型、浮点型、字符型等。每种类型都有其特定的取值范围。

  • 整型 int, long, short, long long
  • 浮点型 float, double, long double
  • 字符型 char
  • 布尔类型 bool (C++11引入)

示例如下:

int a = 10; // 整型
long b = 20000; // 长整型
short c = -100; // 短整型
long long d = 999999999999999999LL; // 长长整型

float e = 3.14f; // 浮点型
double f = 2.71828; // 双精度浮点型
long double g = 9.81L; // 长双精度浮点型

char h = 'x'; // 字符型
bool i = true; // 布尔型

注释

注释是代码中用于解释或标记的部分,编译器会忽略它们。C++支持单行注释和多行注释。

  • 单行注释 使用 // 开头,直到该行结束
  • 多行注释 使用 /* ... */ 包围,可以跨越多行

示例如下:

// 这是单行注释
/*
这是多行注释
可以包含多行
*/
控制结构

条件语句(if, switch)

条件语句允许程序根据不同的条件执行不同的代码块。

if 语句

基本语法:

if (条件) {
    // 条件为真时执行的代码
} else {
    // 条件为假时执行的代码
}

示例如下:

int score = 85;
if (score >= 60) {
    cout << "及格了!";
} else {
    cout << "不及格!";
}

switch 语句

基本语法:

switch (表达式) {
    case 常量1:
        // 代码块1
        break;
    case 常量2:
        // 代码块2
        break;
    default:
        // 默认的代码块
}

示例如下:

char grade = 'B';
switch (grade) {
    case 'A':
        cout << "优秀";
        break;
    case 'B':
        cout << "良好";
        break;
    case 'C':
        cout << "及格";
        break;
    default:
        cout << "不及格";
}

循环语句(for, while, do-while)

循环语句允许代码块重复执行,直到满足某个条件为止。

for 循环

基本语法:

for (初始化; 条件; 更新) {
    // 循环体
}

示例如下:

for (int i = 0; i < 5; i++) {
    cout << "循环次数: " << i << endl;
}

while 循环

基本语法:

while (条件) {
    // 循环体
}

示例如下:

int i = 0;
while (i < 5) {
    cout << "循环次数: " << i << endl;
    i++;
}

do-while 循环

基本语法:

do {
    // 循环体
} while (条件);

示例如下:

int i = 0;
do {
    cout << "循环次数: " << i << endl;
    i++;
} while (i < 5);

跳转语句(break, continue, goto)

跳转语句可以改变程序的执行流程,跳出循环或跳转到语句标签。

break 语句

break 用于跳出当前循环或 switch 语句。

示例如下:

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // 跳出循环
    }
    cout << i << endl;
}

continue 语句

continue 用于跳过当前循环的剩余部分,直接进入下一次循环。

示例如下:

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // 跳过偶数
    }
    cout << i << endl;
}

goto 语句

goto 用于跳转到指定标签处。

示例如下:

int i = 0;
label:
cout << "当前i值为: " << i << endl;
i++;
if (i < 5) {
    goto label;
}
函数

函数定义与调用

函数是程序的基本组成部分,它可以封装一系列操作,供其他代码调用。

定义函数

函数声明的基本语法如下:

return_type 函数名(参数列表) {
    // 函数体
    return 返回值;
}

示例如下:

int add(int a, int b) {
    return a + b;
}

调用函数

调用函数时,传递实参并接收返回值。

示例如下:

int result = add(3, 5);
cout << "结果为: " << result << endl;

函数参数与返回值

函数可以接受参数,也可以返回值。参数可以是基本数据类型,也可以是用户定义的数据类型。

示例如下:

int multiply(int a, int b) {
    return a * b;
}

double average(int a, int b, int c) {
    return (a + b + c) / 3.0;
}

函数重载

函数重载是指多个函数可以有相同的名称,但参数列表不同。这样可以根据不同的参数来区分不同的函数。

示例如下:

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}
数组与指针

数组定义与使用

数组是一组相同类型的数据元素的集合,可以通过下标访问数组中的元素。

定义数组

基本语法:

type array_name[size];

示例如下:

int numbers[5] = {1, 2, 3, 4, 5};
char letters[5] = {'a', 'b', 'c', 'd', 'e'};

访问数组元素

通过下标访问数组元素:

示例如下:

int numbers[5] = {1, 2, 3, 4, 5};
cout << numbers[0] << endl; // 输出 1

指针基础

指针是存储变量地址的变量,可以通过指针访问和修改指针所指向的变量的值。

定义指针

基本语法:

type *pointer_name;

示例如下:

int a = 10;
int *ptr = &a;

访问指针指向的值

使用 * 访问指针指向的值:

示例如下:

int a = 10;
int *ptr = &a;
cout << *ptr << endl; // 输出 10

数组与指针的关系

数组名在表达式中被视为指向数组第一个元素的指针。可以通过指针访问数组元素。

示例如下:

int numbers[5] = {1, 2, 3, 4, 5};
int *ptr = numbers;
cout << *(ptr + 1) << endl; // 输出 2
面向对象编程基础

类与对象

类是面向对象编程的基本组成部分,它定义了一组相关的属性(成员变量)和方法(成员函数)。

定义类

基本语法:

class 类名 {
    // 私有成员
    private:
        type member_variable;

    // 公有成员
    public:
        type member_function();
};

示例如下:

class Student {
private:
    string name;
    int age;

public:
    void set_name(string n) {
        name = n;
    }

    string get_name() {
        return name;
    }
};

创建对象

使用类名来创建对象:

示例如下:

Student s;
s.set_name("张三");
cout << s.get_name() << endl; // 输出 "张三"

成员变量与成员函数

成员变量定义了类的数据成员,成员函数定义了类的方法。

示例如下:

class Rectangle {
private:
    int length;
    int width;

public:
    int get_area() {
        return length * width;
    }
};

构造函数与析构函数

构造函数用于初始化对象,析构函数用于清理对象。

构造函数

基本语法:

类名(参数列表) {
    // 构造函数体
}

示例如下:

class Point {
public:
    int x;
    int y;

    Point(int a, int b) {
        x = a;
        y = b;
    }
};

析构函数

基本语法:

~类名() {
    // 析构函数体
}

示例如下:

class Counter {
private:
    int count;

public:
    Counter() {
        count = 0;
    }

    ~Counter() {
        cout << "析构函数被调用" << endl;
    }

    void increment() {
        count++;
    }

    int get_count() {
        return count;
    }
};

封装、继承与多态

封装

封装是指将数据和操作数据的方法组织在一起,使数据对外部不可直接访问。

示例如下:

class Account {
private:
    double balance;

public:
    void deposit(double amount) {
        balance += amount;
    }

    double get_balance() {
        return balance;
    }
};

继承

继承是指一个类可以继承另一个类的属性和方法,从而实现代码的复用。

示例如下:

class Animal {
public:
    void eat() {
        cout << "吃东西" << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "汪汪汪" << endl;
    }
};

多态

多态是指一个对象可以有多种表现形式,通过基类指针或引用指向派生类对象,可以在运行时动态地调用相应的成员函数。

示例如下:

class Shape {
public:
    virtual void draw() = 0; // 纯虚函数,声明 Shape 类不可实例化
};

class Circle : public Shape {
public:
    void draw() override {
        cout << "绘制圆形" << endl;
    }
};

class Square : public Shape {
public:
    void draw() override {
        cout << "绘制正方形" << endl;
    }
};

void draw_shape(Shape &s) {
    s.draw();
}

int main() {
    Circle c;
    Square s;

    draw_shape(c); // 输出 "绘制圆形"
    draw_shape(s); // 输出 "绘制正方形"
    return 0;
}
C++11新特性简介

自动类型推导(auto 关键字)

auto 关键字用于声明变量时自动推导变量类型,提高了代码的简洁性和可读性。

示例如下:

auto value = 42; // value 的类型为 int
auto pi = 3.14; // pi 的类型为 double
auto ch = 'A'; // ch 的类型为 char

范围 for 循环

范围 for 循环可以方便地遍历容器或数组中的元素。

示例如下:

int numbers[] = {1, 2, 3, 4, 5};
for (auto &num : numbers) {
    num *= 2;
}

for (const auto &num : numbers) {
    cout << num << endl;
}

智能指针(unique_ptr)

智能指针是 C++11 引入的一种安全的指针类型,可以自动管理内存,避免内存泄漏。

示例如下:

#include <memory>

int main() {
    auto ptr = std::make_unique<int>(42);
    *ptr = 100; // 重置指针指向的内存值
    cout << *ptr << endl;

    // unique_ptr 会自动释放内存
    return 0;
}

通过以上教程,读者可以全面了解C++11语法的基本概念、控制结构、函数、数组与指针、面向对象编程基础以及C++11新特性。希望这些知识能帮助读者更好地理解和使用C++语言。如果希望进一步深入学习C++,可以参考慕课网等在线学习平台的相关课程,它们提供了丰富的学习资源和实践项目,帮助读者巩固所学知识。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消