C++ Interview Questions
亲爱的读者,这些C++ Interview Questions专门设计用于让您熟悉在面试C++时可能遇到的问题的本质。 根据我的经验,很好的面试官在你的面试中几乎不打算问任何特定的问题,通常问题从这个主题的一些基本概念开始,然后他们继续基于进一步的讨论和你回答的问题 -
面向对象的编程系统。
类是蓝色打印,反映实体属性和操作。 技术上定义一个类是设计用户定义的数据类型。
该类的实例称为对象。
单,多级,多个,分层和混合。
如果类成员受到保护,则可以在继承的类中访问它。 但是,私人和受保护成员之外都无法访问。
将数据和作用于数据的函数绑定在一个称为封装的实体(类)中的过程。
抽象是指隐藏内部实现并仅展示必要的细节。
继承是将现有类的属性获取到新类中的过程。 现有类称为基类/父类,继承类称为派生/子类。
声明变量volatile会指示编译器可以在外部更改变量。 因此避免了对变量引用的编译器优化。
在函数定义之前将函数前缀为关键字inline作为内联函数。 与普通函数相比,内联函数的执行速度更快,因为编译器将内联函数视为宏。
存储类指定符号的生命周期或范围,例如变量或函数。
以下是C ++支持的存储类
auto,static,extern,register和mutable
可以通过使用可变存储类说明符声明它来更改常量类对象的成员变量。 仅适用于类的非静态和非常量成员变量。
浅拷贝会将内存从一个对象逐位转储到另一个对象。 深层复制是从对象到另一个字段的字段复制。 使用复制构造函数和/或重载赋值运算符实现深层复制。
没有函数体并且赋值为零的虚函数称为纯虚函数。
具有至少一个纯虚函数的类称为抽象类。 我们无法实例化一个抽象类。
引用变量是现有变量的别名。 这意味着变量名称和引用变量都指向相同的内存位置。 因此,也可以使用引用变量来实现原始变量的更新。
虽然未创建相应类的对象,但静态变量会退出。 静态成员变量在为相应类创建的所有对象之间共享公共内存。 可以使用类名本身引用静态成员变量。
在类对象出现之前,可以使用类名调用静态成员函数。 它只能访问类的静态成员。
wchar_t的
点(。)和箭头( - >)
不,定义类/结构只是一个类型定义,不会为它分配内存。
bool,是用C ++语言引入的新原始数据类型。
使用唯一的参数列表定义具有相同名称的多个函数称为函数重载。
为类对象定义现有运算符的新作业称为运算符重载。
不,这是STL(标准模板库)的一个类。
cin,cout,cerr和clog。
私人和受保护。
范围解析运算符(::)
析构函数是类的成员函数,它与类名具有相同的名称,并以波浪号(〜)符号作为前缀。 一旦对象失去其范围,它就会自动执行该对象。 它不能重载,唯一的形式是没有参数。
构造函数是类的成员函数,它与类名相同,并在创建相应类的对象后立即自动执行。
如果程序员没有提供一个并且称为默认构造函数,则每个类都有编译器提供的构造函数。 程序员提供的没有参数的构造函数被称为默认构造函数。 在这种情况下,编译器不提供构造函数。
'new'是运算符可以使用的相同。
'delete'运算符用于释放使用'new'运算符创建的动态内存。
是的,因为C是C ++的子集,我们也可以在C ++中使用C的所有函数。
不,我们需要使用free()C语言。
不是类的成员但仍然可以访问该类的所有成员的函数被称为。 为了实现这一点,我们需要在关键字“friend”之后的所需类中声明。
复制构造函数是将相同的类对象引用作为参数的构造函数。 一旦在创建对象时使用同一类的另一个对象初始化对象,它就会自动调用。
C ++确实支持异常处理。 try,catch&throw是用于相同的关键字。
这是编译器的指针变量,它始终保存当前活动对象的地址。
默认情况下,struct的成员是公共的,默认情况下,该类的成员是私有的。
是。
这样的变量的范围仅适用于块内。 C ++中的变量也可以在块中的任何位置声明。
如果该文件已存在,则在打开文件之前将截断其内容。
范围解析运算符用于
- 解决全局变量的范围。
- 如果函数在类外定义,则将函数定义与类关联。
命名空间是代码的逻辑划分,可用于通过将标识符放在不同的名称空间下来解决标识符的名称冲突。
从命令行/控制台执行时发送到main()函数的参数/参数被调用。 发送的所有参数都只是字符串。
模板类是泛型类。 关键字模板可用于定义类模板。
带有椭圆的catch块如下
catch(…)
{
}
默认情况下,该函数的每个局部变量都是自动的(自动)。 在下面的函数中,变量'i'和'j'都是自动变量。
void f()
{
int i;
auto int j;
}
NOTE - 全局变量不能是自动变量。
静态局部变量在函数调用之间保留其值,默认值为0.如果调用三次,则以下函数将打印1 2 3。
void f()
{
static int i;
++i;
printf(“%d “,i);
}
如果全局变量是静态的,则其可见性仅限于相同的源代码。
用于解析全局符号的范围
#include <iostream>
using namespace std;
main() {
extern int i;
cout<<i<<endl;
}
int i = 20;
数组的起始地址称为数组的基址。
如果最常使用变量,则应使用寄存器存储说明符声明它,然后编译器可能会为其存储器提供CPU寄存器以加快变量的查找。
是的,它可以但不能执行,因为执行需要main()函数定义。
默认情况下,每个局部变量都是一个自动变量,存储在堆栈内存中
包含至少一个其他类类型的成员变量的类被称为。
C ++程序由各种令牌组成,令牌可以是关键字,标识符,常量,字符串文字或符号。
预处理器是编译器在实际编译过程开始之前执行某些操作的指令。
我们在执行程序时传递给main()函数的参数被称为命令行参数。 参数总是保存在函数的第二个参数(args中)中的字符串,该函数是字符指针数组。 第一个参数表示参数计数(在计数下面)并由操作系统自动更新。
main( int count, char *args[]) {
}
Call by value - 我们仅将值作为参数发送给函数。 如果我们不希望用形式参数修改实际参数但只是使用它们,我们选择这个。
Call by address - 我们发送实际参数的地址而不是值。 如果我们确实希望用形式参数修改实际参数,我们选择这个。
Call by reference - 使用C ++新引用变量作为形式参数接收实际参数。 如果我们确实希望用形式参数修改实际参数,我们选择这个。
错误,模数运算符(%)的任一个操作数都是实数,这是无效的。
Opiton -lm用作> g ++ -lm
不,没有这样的规定。
Bjarne Stroustrup。
的sizeof
我们可以将范围解析运算符(::)应用于全局变量的范围。
指针上唯一允许的两个操作是
比较ii)加法/减法(不包括无效指针)
函数调用本身称为递归。
程序名称。
理想情况下,它是32个字符,也依赖于实现。
默认情况下,函数按值调用。
公共,私人和受保护
Delete []用于释放使用new []分配的数组分配内存,delete用于释放使用new分配的一块内存。
不一定,具有至少一个纯虚函数的类也是抽象类。
不,由于编译器无法进行转换,因此会出错。
该计划应该突然退出。
不,可以处理异常,而程序无法解决错误。
使用相同的签名和名称定义基类和派生类中的函数,其中基类的函数是虚函数。
seekg()
seekp()
不,只有类成员变量确定相应类对象的大小。
我们可以创建一个空类,对象大小为1。
C ++定义的默认命名空间。
标准模板库
cout是ostream类的对象。 默认情况下,流'cout'连接到控制台输出设备。
cin是istream类的对象。 默认情况下,流'cin'连接到控制台输入设备。
它用于指定正在使用的命名空间。
箭头( - >)运算符可以用于相同的
如果<>中包含头文件,则编译器仅在内置包含路径中搜索特定头文件。 如果头文件包含在“”中,则编译器首先在当前工作目录中搜索特定头文件,如果未找到则在内置包含路径中
S ++,因为它是内部的单机指令(INC)。
在接收称为形式参数的函数定义时,在调用端发送给函数的参数称为实际参数。
声明将类型与变量关联,而定义则为变量赋值。
去。
不,它包含无效的八进制数字。
它将用于取消定义现有的宏定义。
不,我们不可以。
虚拟析构函数确保以与继承对象构造的对象相反的顺序释放对象资源。
对象按其创建的相反顺序销毁。
通过在目标类中放置带有前缀为关键字“friend”的类声明,类成员可以获得对其他类成员的可访问性。
接下来是什么? (What is Next ?)
此外,您可以查看您对该主题所做的过去作业,并确保您能够自信地说出这些作业。 如果你更新鲜,那么面试官不会指望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大。