c++学习

打印 上一主题 下一主题

主题 515|帖子 515|积分 1545

关键字

continue

continue 关键字用于控制循环语句的执行流程。当continue 语句被执行时,它会跳过当前循环迭代中剩余的代码,并立即开始下一次迭代。continue 通常用于 for、while 和 do-while 循环中。
  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     for (int i = 0; i < 10; i++) {
  5.         if (i % 2 == 0) {
  6.             continue;  // 跳过本次循环剩余的代码,继续下一次循环
  7.         }
  8.         cout << i << " ";
  9.     }
  10.     return 0;
  11. }
  12. 在这个例子中,continue 语句会使程序跳过 i 为偶数的情况,因此只会打印奇数:1 3 5 7 9。
复制代码
static

static 关键字在C++中有多种用途,分别可以应用于变量、函数和成员变量或成员函数。 
1.静态局部变量 :静态局部变量是在函数内部定义的,但它们的生命周期跨越整个步伐的运行时间。它们在第一次执行时初始化,而且其值在函数调用之间保持不变。
  1. #include <iostream>
  2. void demo() {
  3.     static int count = 0;  // 静态局部变量
  4.     count++;
  5.     std::cout << "Count: " << count << std::endl;
  6. }
  7. int main() {
  8.     demo();  // 输出: Count: 1
  9.     demo();  // 输出: Count: 2
  10.     demo();  // 输出: Count: 3
  11.     return 0;
  12. }
复制代码
 2.静态全局变量:在文件作用域内,静态全局变量的作用域限定在定义它的文件内,其他文件不能访问它。这在多文件项目中非常有用,由于它避免了命名冲突。
  1. // File1.cpp
  2. static int globalVar = 10;  // 静态全局变量
  3. void printVar() {
  4.     std::cout << globalVar << std::endl;
  5. }
  6. // File2.cpp
  7. extern void printVar();
  8. int main() {
  9.     printVar();  // 输出: 10
  10.     return 0;
  11. }
复制代码
3. 静态成员变量:静态成员函数只能访问静态成员变量和静态成员函数。它们不依赖于类的实例,可以直接通过类名调用。
  1. #include <iostream>
  2. class MyClass {
  3. public:
  4.     static void staticFunc() {
  5.         std::cout << "This is a static function." << std::endl;
  6.     }
  7. };
  8. int main() {
  9.     MyClass::staticFunc();  // 通过类名调用静态成员函数
  10.     return 0;
  11. }
复制代码
 静态成员函数:静态成员函数只能访问静态成员变量和静态成员函数。它们不依赖于类的实例,可以直接通过类名调用。
  1. #include <iostream>
  2. class MyClass {
  3. public:
  4.     static void staticFunc() {
  5.         std::cout << "This is a static function." << std::endl;
  6.     }
  7. };
  8. int main() {
  9.     MyClass::staticFunc();  // 通过类名调用静态成员函数
  10.     return 0;
  11. }
复制代码
静态变量在命名空间:在命名空间内声明静态变量也会使其仅在该编译单元中可见。
  1. namespace MyNamespace {
  2.     static int namespaceVar = 42;
  3. }
  4. int main() {
  5.     std::cout << MyNamespace::namespaceVar << std::endl;  // 输出: 42
  6.     return 0;
  7. }
复制代码
虚函数

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


  • 定义:在基类中用 virtual 关键字修饰的函数就是虚函数。
  • 重写:子类可以选择性地重写基类中的虚函数,即子类可以提供自己版本的函数实现。
  • 动态绑定:通过基类的指针或引用调用虚函数时,实际调用的是指向对象的实际范例(运行时的范例)中的函数,而不是编译时范例的函数。
  • 虚函数表:编译器为每个定义了虚函数的类维护一个虚函数表(V-Table),这个表中存储了虚函数的地点。当通过基类指针或引用调用虚函数时,步伐会根据虚函数表找到实际要调用的函数地点。

虚函数利用背景
虚函数的紧张作用是通过基类接口实现多态。假设你有一个基类 Animal,以及从它派生的 Dog 和 Cat 类。你可以在 Animal 中定义一个虚函数 speak(),然后在 Dog 和 Cat 中重写这个函数
  1. class Animal {
  2. public:
  3.     virtual void speak() {
  4.         std::cout << "Animal speaks" << std::endl;
  5.     }
  6. };
  7. class Dog : public Animal {
  8. public:
  9.     void speak() override {
  10.         std::cout << "Woof!" << std::endl;
  11.     }
  12. };
  13. class Cat : public Animal {
  14. public:
  15.     void speak() override {
  16.         std::cout << "Meow!" << std::endl;
  17.     }
  18. };
  19. #现在,假设你有一个 Animal 类型的指针,指向 Dog 对象:
  20. Animal* animal = new Dog();
  21. animal->speak();
  22. #在这里,尽管 animal 是 Animal 类型的指针,但由于 speak() 是虚函数,实际调用的是 Dog 类中重写的 speak() 方法。因此,输出结果将是 Woof! 而不是 Animal speaks。
复制代码
 全局变量

 全局变量通常在文件的开头(在任何函数或类定义的外貌)定义
  1. #include <iostream>
  2. int globalVar = 10;  // 定义一个全局变量
  3. int main() {
  4.     std::cout << "Global variable: " << globalVar << std::endl;
  5.     return 0;
  6. }
  7. #在这个例子中,globalVar 是一个全局变量,它可以在 main() 函数中访问。
复制代码
全局变量的特点 
 


  • 作用域

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

  • 生命周期

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

  • 初始值

    • 全局变量假如未显式初始化,默认会被初始化为0(对于整数范例)、0.0(对于浮点范例)或空指针(对于指针范例)。

  • 多文件中的全局变量

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表