构造函数不能声明为虚函数,析构函数可以声明为虚函数,且有时候必须声明为虚函数。构造函数和析构函数都不能调用虚函数。
先析构子类再析构父类,如果父类析构函数有虚函数,会导致调用子类的已经析构的内容。
先构造父亲类再构造子类,如果父类构造函数有虚函数,会导致调用子类还没构造的内容。
A:构造函数不能声明为虚函数的原因是: 

1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。

2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间,虚函数表还没有被初 始化,将无法进行。
new int(12)是生成了一个值为12的int变量,new int[12]才是生成一个大小为12的数组。对基本类型数组来说,delete a和delete []a的效果是一样的。如果,a是一个自定义对象的数组,那么只能用delete []a。
1) malloc 函数: void *malloc(unsigned int size)

在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。

2)calloc 函数: void *calloc(unsigned int num, unsigned int size)

按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。

calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。 
 3)realloc 函数: void *realloc(void *ptr, unsigned int size)

动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size。

申请的内存空间不会进行初始化。
4)new是动态分配内存的运算符,自动计算需要分配的空间,在分配类类型的内存空间时,同时调用类的构造函数,对内存空间进行初始化,即完成类的初始化工作。动态分配内置类型是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化。
假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include <stdio.h>
int main(){
  long long a = 1, b = 2, c = 3; 
  printf("%d %d %d\n", a, b, c);  
 return 0;
}1,0,2
注:
1 printf()是一个库函数,C,C++中函数的参数是从右往左入栈的;
2 栈的生长方向是从高往低的(important)
3 小端模式是低位存储在低字节
4 %d格式输出的是4个字节大小,而long long为8个字节
Linux crontab中* * * * * /usr/local/run.sh这句话5个*号分别代表什么?
*  *  *  *  *  command 
分  时  日 月  周    命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令 

不算main这个进程自身,到底创建了多少个进程啊?

int main(int argc, char* argv[])

{
   fork();
   fork() && fork() || fork();
   fork();
}19
fork()是一个分叉函数, 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程   返回子进程标记;否则,出错返回-1
每一次fork()就翻倍;
第一条和第三条分别X2;关键在第二条语句。第二条有 5个分支;
A&&B||C
A为假,跳过B,判断C----------------------1
A为真,判断B,若B为真,跳过C-----------2
若B为假,判断C  ------------2
故总数为2*(2+1+2)*2=10;减去自己就是19.
Linux下多少个"-"将被打印:
int main(void){
  int i;
  for(i=0;i<4;i++){
  fork();
  printf("-\n");
 }
 return 0;
}30
fork的题可以按以下公式来算。
主进程1分为2,每个子进程1分为2,构成一个二叉树,树高等于循环的次数n。最后一层是最后得到的子进程数,它是偶数,等于2^n,本题应该是求fork次数的2倍。子结点中没有执行fork,但执行了一次打印。每个进程每次循环中只会打印一次。另外,这个树的层次是4,最后一层的结点数等于上面所有层的节点数+1
SUBSEP为数组下标的分隔符,预设值为“\034”,awk中的数组只接受字串当它的数组下标,awk在接受Arr[2,79]之前,就已将其下标转成字串“2\03479”,之后变便以Arr["2\03479"]代替Arr[2,79]。
挂载设备使用mount,卸载设备使用umount,有三种方式,通过设备名,挂载点或者设备名和挂载点
如题目所示:
umount /dev/hdc
umount /mnt/cdrom
umount /mnt/cdrom /dev/hdc
要创建一个 tar 文件,键入:tar -cvf filename.tar directory/file
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
局部变量存放在栈中,堆中存放的是new和malloc开辟出的,而程序中定义的常量存放在只读存储区
自由时差,简称FF(Free Float),指一项工作在不影响其紧后工作最早开始时间的条件下,本工作可以利用的机动时间。
总时差TF(Total Float )指一项工作在不影响总工期的前提下所具有的机动时间,即用最迟完成时间与最早完成时间之差
纯虚函数是在基类声明的虚函数,它在基类中没有定义,但是要求派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后面添加“=0” 
比如 virtual void f()=0;
而c++中包含纯虚函数的类称为抽象类,由于抽象类中包含了没有定义的纯虚函数,所以不能定义抽象类的对象。
总结:1.抽象类只能用作其他类的基类,不能定义抽象类的对象。
2.抽象类不能用于参数类型、函数返回值或显示转换的类型
3.抽象类可以定义抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性
int main()
{
    bool first=true;
    int sum=0;
    int value;
    unsigned short i=0xFFFF;
    for (;i>=0;--i)
    {
        if (first)
        {
            value=65536;
            sum+=value%3;
            first=false;
        }
        else{
            sum+=--value%3;
            if (value<=0)
            {
                cout<<sum<<","<<i;
                break;
            }
        }
    }
    return 0;
65536,65535
由于i是无符号数,因此 i>=0恒成立,代码停止条件为value<=0。另外注意,--的优先级高于%。
char* s1 = "Hello world";
char s2[] = "Hello world";
s1[2] = 'E';     // 1
s2[2] = 'E';     // 2
*(s1 + 2) = 'E';  // 3
*(s2 + 2) = 'E';  // 4
1,3非法。
dynamic_cast将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理, 即会作一定的判断。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。
reinterpret_cast这个转换是最“不安全”的,两个没有任何关系的类指针之间转换都可以用这个转换实现。
static_cast静态转换是最接近于C风格转换,很多时候都需要程序员自身去判断转换是否安全。
const_cast这个转换好理解,可以将常量转成非常量。

转载于:https://www.cnblogs.com/tsunami-lj/p/6414041.html

牛客网刷题知识汇总2相关推荐

  1. 牛客网刷题知识汇总3

    typedef struct { char flag[3]; short value; } sampleStruct; union { char flag[3]; short value; } sam ...

  2. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

  3. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  4. 【牛客网刷题】中秋节前开启java专项练习错题总结第一天

    [牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...

  5. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  6. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  7. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  8. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  9. 牛客网刷题 --- 输入输出数据处理

    正确处理输入输出格式 常见的输入格式: 预先不输入数据的组数 - 直接读到文件结尾 预先输入数据的组数 - 读数据组数然后循环 只有一组数据 - 直接读数据 处理输出格式要注意细节,看题目的具体要求 ...

最新文章

  1. 我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等)...
  2. Nexus.js介绍:一个多线程的JavaScript运行库
  3. CPU也支持AI加速,英特尔发布第3代至强处理器,推理速度提升80%,阿里腾讯云都在用...
  4. 阿里敏捷实践| 4个迭代,从批量交付向持续交付转型 1
  5. java的开源项目哪里找,我想参加开源项目的开发,请问在网上去哪找这样的项目? 纯C语言的(非C++或JAVA)...
  6. 电脑编程教学_东莞沙田mastercam编程学习怎么收费
  7. Direct HTTP Tunnel(直接HTTP客户端)
  8. “秃如其来”的90后,造就了一个蒸蒸日上的产业
  9. Web API——添加Swagger、SQL Server、日志记录、导出到Excel和Docker
  10. python 函数 思维导图
  11. python画矢量图_用Python把图做的好看点:用Pyecharts做个交互地图(三)-导出矢量图...
  12. java生成word并导出pdf
  13. 单反拍摄技巧:利用直方图曝光
  14. 免费的XMind思维脑图在线编辑的网站, 可打开 .pos 文件
  15. 如何使用KALI攻击“恶意网站“实验
  16. 1.1 迷茫的大学——《逆袭大学》连载
  17. ROC曲线,曲线下的面积(Aera Under Curve,AUC),P-R曲线
  18. 交互技术前沿学习分享-翻译
  19. matlab中clear的功能,matlab中clc,close,close all,clear,clear all作用区别
  20. 女生适合学数据分析吗

热门文章

  1. 10个前端开发人员必须知道的CSS框架
  2. 这10个实用的Javascript调试技巧,你知道吗?
  3. DATEDIFF() 函数返回两个日期之间的天数
  4. 二叉树的先序、中序、后序遍历超详解
  5. php java openssl ras_php基于openssl的rsa加密解密示例
  6. VS2015配置Opencv
  7. java ecc signature_如何用python验证android/java的ECC签名
  8. 诛仙服务器列表文件,诛仙云服务器
  9. Javascript设置定时请求
  10. 3Dslicer +VS2013编译介绍