2018-9-5 鼎桥通信C++面经

鼎桥通信C++面经

类与结构体的区别

默认的访问权限:
(1)C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。
(2) C++结构体的继承默认是public,而C++类的继承默认是private。

引用和指针

引用是一个变量的别名,不能为空,必须在声明的时候初始化,而且之后不能修改为其他的变量的别名;
指针的值是一块内存的地址,可以为空,可以先声明后初始化,后面可以修改其指向的内存地址。

析构函数 虚析构函数

  1. 析构函数
~Date()
   {
       cout << "~Date()" << this << endl;
   }
private:

析构函数是在对象消亡的时候调用,用于回收内存。如果没有自行定义析构函数,编译器会生成一个默认的析构函数,函数体执行结束的时候会自动调用析构函数。
如果是用new定义了一个在堆上的对象 A *p=new A; 那么必须使用delete p; 才会调用析构函数回收内存。

  1. 虚析构函数
    https://www.cnblogs.com/liushui-sky/p/5824919.html
    https://blog.csdn.net/xld_hung/article/details/76776497
    虚析构函数一般指的是将基类的析构函数声明为虚函数,在定义一个基类指针,其指向对象是一个派生类的时候,通过动态绑定实现在运行的时候确定该指针的指向是派生类,从而在删除对象的时候调用派生类的析构函数,防止内存泄漏。
#include <iostream>
using namespace std;

class Base
{
private:
    int i;
public:
    Base()
    {
        cout << "Base count " << endl;
    }
    virtual ~Base()
    {

        cout << "Base descount" << endl;
    }
};
class Inherit :public Base
{
private:
    int num;
public:
    Inherit()
    {
        cout << "Inherit count" << endl;
    }
    ~Inherit()
    {
        cout << "Inherit descout" << endl;

    }
};
int main()
{
    Base *p;
    p = new Inherit;
    delete p;
    return 0;
}

上面的代码我将指针的声明和初始化拆开成两行,调试的时候发现声明的时候并没有调用基类的构造函数,在初始化的时候一次性调用了基类和派生类的构造函数,而delete p的时候就调用了派生类和基类的析构函数。有点蒙圈,哪位大佬可以帮我解释一下?
运行结果:

Base count
Inherit count
Inherit descout
Base descount

线程与进程 多线程

https://www.cnblogs.com/fuchongjundream/p/3829508.html
进程是分配资源的基本单位,线程是独立运行和独立调度的基本单位。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

指针常量 常量指针

int const*p; 等价于 const int *p; 都表示指针p指向的是一个常量
int *const p; 表示指针p是一个常量,不能更改指向

静态变量,静态函数

https://www.cnblogs.com/secondtonone1/p/5694436.html
https://www.cnblogs.com/ppgeneve/p/5091794.html

  1. 静态局部变量和静态全局变量
    静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序结束都一直存在,即它的生命周期是程序运行就存在,程序结束就结束,
    静态全局变量具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。
  2. 类的静态成员变量和静态成员函数
    静态成员变量和静态成员函数主要是为了解决多个对象数据共享的问题,他们都不属于某个对象,而是属于类的。
    静态成员变量定义的时候前面加static关键字,初始化必须在类外进行,前面不加static。其初始化格式如下:
    <数据类型><类名>::<静态数据成员名>=<值> //静态变量的初始化
    静态成员函数也是属于类的成员,不能直接引用类的非静态成员,如果静态成员函数中要引用非静态成员时,可通过对象来引用。静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 9,511评论 0 45
  • 一、C语言基础 1、struct 的内存对齐和填充问题其实只要记住一个概念和三个原则就可以了: 一个概念:自然对齐...
    XDgbh阅读 2,208评论 1 38
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 4,994评论 0 14
  • 昨晚到今早,我好乏。背酸痛。孩子上学去了。阿俊在医院。我爬起,穿衣,洗手,安顿好稀饭。又回床,七点十五,小叔来。吃...
    香梅1阅读 320评论 0 0
  • [人机交互] [智能硬件] 本文转载自:雷锋网 谷歌的 VR/AR 故事,一切还要从 Carboard 说起。三年...
    CoverUER阅读 331评论 0 0