美文网首页
面试题目

面试题目

作者: 动感新势力fan | 来源:发表于2019-08-23 14:53 被阅读0次
      1. 拷贝构造函数通常用于
    • 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值

    • 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数

    • 当函数的返回值是类对象时,系统自动调用拷贝构造函数

      1. 必须使用的情况
        如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数
         Line::Line(const Line &obj){  // &obj是对象line的一个引用,用这个对象的引用来初始化另一个对象
            cout << "调用拷贝构造函数,并为指针ptr分配内存" << endl;
            ptr = new int;
            *ptr = *obj.ptr;  // 拷贝值
        }
    
      1. 防止默认拷贝的发生 私有化
    • 4.一边遍历一边删除vector

      #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    { 
       vector<int> v;
       for(int i = 0; i < 10; i++){
           v.push_back(i);
       }
       auto it = v.begin();
       while(it != v.end()){
           if(*it == 1){
               it = v.erase(it);
           }
           else it++;
       }
       for(int i = 0; i < v.size(); i++){
           cout << v[i] << endl;
       }
       return 0;
    }
    
      1. 单例模式的实现
        构造函数私有化 加一个公有函数 getinstance 加锁
      1. vector 随机访问时间复杂度 O(1) 插入删除 O(n)
        list 随机访问时间复杂度 O(n) 插入删除 O(1)
      1. 哈希表的原理
        其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫散列函数),使得每个元素的关键字都与一个函数值(即数组下标,hash值)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素“分类”,然后将这个元素存储在相应“类”所对应的地方,称为桶。
        但是,这不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对不不同的元素,却计算出相同的函数值,这样就产生了“冲突”。换句话说,就是把不同的元素分在了相同的“类”中。总的来说,“直接定址”和“解决冲突”是哈希表的两大特点
      1. 多线程下,信号槽分别在什么线程中执行,如何控制

    可以通过connect的第五个参数进行控制信号槽执行时所在的线程

    connect有几种连接方式,直接连接和队列连接、自动连接

    直接连接:信号槽在信号发出者所在的线程中执行

    队列连接:信号在信号发出者所在的线程中执行,槽函数在信号接收者所在的线程中执行

    自动连接:多线程时为队列连接函数,单线程时为直接连接函数

      1. 运行某些耗时操作如果界面程序很卡 ,你会怎么优化
        数据库相关的工作、写磁盘,网络连接
      1. qt哪几种创建线程的方式
        继承QThread run
        继承object MoveThread
      1. 线程同步的方式
        互斥锁 条件变量 读写锁 信号量
    • 12.线程间共享的资源有
      共享的资源有

    a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)

    b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的

    c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的

    d. 文件等公用资源 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

    独享的资源有

    a. 栈 栈是独享的

    b. 寄存器

    相关文章

      网友评论

          本文标题:面试题目

          本文链接:https://www.haomeiwen.com/subject/mfctectx.html