北京C++培训
美国上市C++培训机构

010-62126400

热门课程

北京C++培训 > 雇主企业 > 企业面试题 >C++面试常见问题整理汇总(一)

C++面试常见问题整理汇总(一)

  • 时间:2018-08-29 11:34
  • 发布:北京C++培训
  • 来源:企业面试题

针对C++的基本语法和面向对象各种概念以及易错点,北京达内C语言培训为大家分享C++面试常见问题。希望对大家有所帮助。今天分享3点

1. 继承方式

public   父类的访问级别不变

protected 父类的public成员在派生类编程protected,其余的不变

private 父类的所有成员变成private

#include

using namespace std;

class base

{

public:

void printa()

{ cout <<"base"<< endl; }

protected:

void printhello()

{ cout <<"helo"<< endl; }

private:

void printnohello()

{ cout <<"no hello"<< endl; }

};

class derived : public base

{

public:

void printb() { printhello(); }

// void printc() { printnohello(); } //printnohello是父类的私有函数,不可访问

};

int main()

{

base a;

a.printa();

//a.printhello(); //printhello是类derived的protected函数,不可访问。

}

2. sizeof 和 strlen 的区别

① sizeof 是一个操作符,strlen 是库函数。

② sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\ 0‘的字符串作参数。

③ 编译器在编译时就计算出了sizeof 的结果。而strlen 函数必须在运行时才能计算出来。并且 sizeof计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。

④ 数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。

#include

#include

#include

using namespace std;

int main()

{

int a[] = {1, 2, 3, 4, 5};

cout << sizeof(a) << endl; //20

// cout << strlen(a) << endl;

char b[] = {'a', 'b'};

cout << strlen(b) << endl; //6

cout << sizeof(b) << endl; //2

}

3. C中的 malloc 和C++中的 new 有什么区别

new、delete 是操作符,可以重载,只能在 C++中使用。

malloc、free 是函数,可以覆盖,C、C++中都可以使用。

new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数。

malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数

new、delete 返回的是某种数据类型指针,malloc、free 返回的是 void 指针。

注意:malloc 申请的内存空间要用 free 释放,而 new 申请的内存空间要用 delete 释放,不要混用。

因为两者实现的机理不同。

以上三点是否记住,请继续关注北京达内C语言培训分享关于C++常见面试问题。

上一篇: 写一个函数找出一个整数数组中,第二大的数(microsoft)
下一篇:C++面试常见问题整理汇总(二)

C++面试常见问题整理汇总(二)

C++面试常见问题整理汇总(一)

选择城市和中心
贵州省

广西省

海南省