当前位置: 首页 > news >正文

c++学习

关键字

continue

continue 关键字用于控制循环语句的执行流程。当continue 语句被执行时,它会跳过当前循环迭代中剩余的代码,并立即开始下一次迭代。continue 通常用于 forwhiledo-while 循环中。

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue;  // 跳过本次循环剩余的代码,继续下一次循环
        }
        cout << i << " ";
    }
    return 0;
}
在这个例子中,continue 语句会使程序跳过 i 为偶数的情况,因此只会打印奇数:1 3 5 7 9。

static

static 关键字在C++中有多种用途,分别可以应用于变量、函数和成员变量或成员函数。 

1.静态局部变量 :静态局部变量是在函数内部定义的,但它们的生命周期跨越整个程序的运行时间。它们在第一次执行时初始化,并且其值在函数调用之间保持不变。

#include <iostream>
void demo() {
    static int count = 0;  // 静态局部变量
    count++;
    std::cout << "Count: " << count << std::endl;
}

int main() {
    demo();  // 输出: Count: 1
    demo();  // 输出: Count: 2
    demo();  // 输出: Count: 3
    return 0;
}

 2.静态全局变量:在文件作用域内,静态全局变量的作用域限制在定义它的文件内,其他文件不能访问它。这在多文件项目中非常有用,因为它避免了命名冲突。

// File1.cpp
static int globalVar = 10;  // 静态全局变量

void printVar() {
    std::cout << globalVar << std::endl;
}

// File2.cpp
extern void printVar();

int main() {
    printVar();  // 输出: 10
    return 0;
}

3. 静态成员变量:静态成员函数只能访问静态成员变量和静态成员函数。它们不依赖于类的实例,可以直接通过类名调用。

#include <iostream>

class MyClass {
public:
    static void staticFunc() {
        std::cout << "This is a static function." << std::endl;
    }
};

int main() {
    MyClass::staticFunc();  // 通过类名调用静态成员函数
    return 0;
}

 静态成员函数:静态成员函数只能访问静态成员变量和静态成员函数。它们不依赖于类的实例,可以直接通过类名调用。

#include <iostream>

class MyClass {
public:
    static void staticFunc() {
        std::cout << "This is a static function." << std::endl;
    }
};

int main() {
    MyClass::staticFunc();  // 通过类名调用静态成员函数
    return 0;
}

静态变量在命名空间:在命名空间内声明静态变量也会使其仅在该编译单元中可见。

namespace MyNamespace {
    static int namespaceVar = 42;
}

int main() {
    std::cout << MyNamespace::namespaceVar << std::endl;  // 输出: 42
    return 0;
}

虚函数

虚函数(Virtual Function)是面向对象编程中的一个概念,主要用于实现多态性(polymorphism)。它是基类(父类)中的一个函数,可以被子类(派生类)重写(override)。当使用基类的指针或引用来调用虚函数时,实际调用的是子类中重写的版本,而不是基类中的版本。这个过程称为动态绑定(dynamic binding)或后期绑定(late binding)。

虚函数特点:

  • 定义:在基类中用 virtual 关键字修饰的函数就是虚函数。

  • 重写:子类可以选择性地重写基类中的虚函数,即子类可以提供自己版本的函数实现。

  • 动态绑定:通过基类的指针或引用调用虚函数时,实际调用的是指向对象的实际类型(运行时的类型)中的函数,而不是编译时类型的函数。

  • 虚函数表:编译器为每个定义了虚函数的类维护一个虚函数表(V-Table),这个表中存储了虚函数的地址。当通过基类指针或引用调用虚函数时,程序会根据虚函数表找到实际要调用的函数地址。

虚函数使用背景

虚函数的主要作用是通过基类接口实现多态。假设你有一个基类 Animal,以及从它派生的 DogCat 类。你可以在 Animal 中定义一个虚函数 speak(),然后在 DogCat 中重写这个函数

class Animal {
public:
    virtual void speak() {
        std::cout << "Animal speaks" << std::endl;
    }
};

class Dog : public Animal {
public:
    void speak() override {
        std::cout << "Woof!" << std::endl;
    }
};

class Cat : public Animal {
public:
    void speak() override {
        std::cout << "Meow!" << std::endl;
    }
};
#现在,假设你有一个 Animal 类型的指针,指向 Dog 对象:
Animal* animal = new Dog();
animal->speak();
#在这里,尽管 animal 是 Animal 类型的指针,但由于 speak() 是虚函数,实际调用的是 Dog 类中重写的 speak() 方法。因此,输出结果将是 Woof! 而不是 Animal speaks。

 全局变量

 全局变量通常在文件的开头(在任何函数或类定义的外面)定义

#include <iostream>

int globalVar = 10;  // 定义一个全局变量

int main() {
    std::cout << "Global variable: " << globalVar << std::endl;
    return 0;
}
#在这个例子中,globalVar 是一个全局变量,它可以在 main() 函数中访问。

全局变量的特点 

 

  • 作用域

    • 全局变量的作用域是从定义点到程序结束。它可以在定义之后的任何函数或代码块中被访问。
  • 生命周期

    • 全局变量的生命周期从程序开始到程序结束。因此,它们在整个程序的执行过程中始终存在。
  • 初始值

    • 全局变量如果未显式初始化,默认会被初始化为0(对于整数类型)、0.0(对于浮点类型)或空指针(对于指针类型)。
  • 多文件中的全局变量

    • 如果在多文件中使用全局变量,可能会遇到重定义问题。为了避免这种问题,可以使用 extern 关键字声明全局变量,这样在其他文件中可以引用同一个全局变量。

相关文章:

  • 搜维尔科技:正在使用Faceware面部表情捕捉系统实时给影视角色配音
  • 坐牢第二十七天(聊天室)
  • Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)
  • 二叉树(三)
  • 继承的多种方式
  • Taro+Vue 创建微信小程序
  • 蓝桥杯编程题讲解
  • pytorch自动微分
  • 【数学建模】MATLAB快速入门
  • 每日一题——贪心算法
  • c++ 继承类的构造函数
  • Self-Attention流程的代码实现【python】
  • 使用AWS Lambda轻松开启Amazon Rekognition之旅
  • 【STM32单片机_(HAL库)】3-2-3【中断EXTI】【电动车报警器项目】433M无线收发模块实验
  • 使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台
  • Python-数据爬取(爬虫)
  • Ceph篇之利用shell脚本实现批量创建bucket桶
  • 《区块链与监管合规:在创新与规范之间寻求平衡》
  • 单片机大小端模式
  • 100个练习学习Rust!可变性・循环・溢出
  • 老人刷老年卡乘车被要求站着?公交公司致歉:涉事司机停职
  • 白俄罗斯政府代表团将访问朝鲜
  • 科普|肩周炎的自限性,意味着不治也能自己好?
  • 赵心童世锦赛历史性夺冠,你今天打斯诺克很可能订不到位
  • 消失的日本中年劳动者:任何人都有与社会脱节的风险
  • 日本儿童人数已连续44年减少,少子化问题越发严重