1.8 C/C++ 虚函数 && 并行

一、纯虚函数是什么

形式:virtual 返回类型 虚函数名(形参表)= 0;

含有虚函数的类会变成抽象类,该类只能被继承而不能被实例化对象。纯虚函数永远不会被调用,主要是用来统一管理子对象。

二、什么函数不能被声明为虚函数

  • 普通函数;
  • 静态成员函数;
  • 内联成员函数(内联函数是为了减少调用代价,而虚函数是为了多态,这两者之间矛盾,并且内联函数在编译的时候就已经展开);
  • 构造函数;
  • 友元函数

三、C++中如何阻止一个类被实例化?

将类的成员函数写成纯虚函数,变成抽象类。

四、std::thread

(1)基本用法

1)创建线程:通过函数、Lambda 或成员函数创建线程:

关键点

线程在构造时立即开始执行(无需手动启动)。

必须调用 join()detach(),否则程序终止时可能崩溃(std::terminate)。

#include <iostream>
#include <thread>

// 普通函数
void hello() {
    std::cout << "Hello from thread!\n";
}

// 带参数的函数
void print_num(int num) {
    std::cout << "Number: " << num << "\n";
}

int main() {
    // 方式1:绑定普通函数
    std::thread t1(hello);

    // 方式2:绑定带参数的函数
    std::thread t2(print_num, 42);

    // 方式3:Lambda 表达式
    std::thread t3([]() {
        std::cout << "Lambda thread!\n";
    });

    // 等待线程结束
    t1.join();
    t2.join();
    t3.join();

    return 0;
}

2)线程的 join()detach()

方法

作用

注意事项

join()

阻塞当前线程,直到目标线程执行完毕

必须调用,否则可能导致资源泄漏

detach()

分离线程,使其在后台独立运行(无法再控制)

分离后无法再 join(),需确保不会访问失效数据

(2)线程传参

1)值传递 vs. 引用传递

值传递:参数被拷贝到线程的栈中(默

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++/嵌入式开发 秋招面经 文章被收录于专栏

一名985硕,在25年秋招中斩获多个C++/嵌入式开发Offer。本专栏将分享我的面经,涵盖C/C++、操作系统、计算机网络、ARM体系与架构、Linux应用/驱动开发、Qt、通信协议及开发工具链等核心内容。

全部评论
纯虚函数细节
点赞 回复 分享
发布于 04-01 23:10 河北
欢迎订阅专栏《C++/嵌入式开发 秋招面经》 :https://www.nowcoder.com/creation/manager/columnDetail/MKaoll
点赞 回复 分享
发布于 03-30 17:05 河北

相关推荐

评论
6
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务