C++常见英文面试笔精彩试题Word格式文档下载.docx
《C++常见英文面试笔精彩试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++常见英文面试笔精彩试题Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
Whatiscopyconstructor?
Constructorwhichinitializestheit'
sobjectmembervariables(byshallowcopying)withanotherobjectofthesameclass.Ifyoudon'
timplementoneinyourclassthencompilerimplementsoneforyou.
forexample:
BooObj1(10);
//callingBooconstructor
BooObj2(Obj1);
//callingboocopyconstructor
BooObj2=Obj1;
//callingboocopyconstructor
Whenarecopyconstructorscalled?
Copyconstructorsarecalledinfollowingcases:
a)whenafunctionreturnsanobjectofthatclassbyvalue
b)whentheobjectofthatclassispassedbyvalueasanargumenttoafunction
c)whenyouconstructanobjectbasedonanotherobjectofthesameclass
d)Whencompilergeneratesatemporaryobject
Whatisassignmentoperator?
Defaultassignmentoperatorhandlesassigningoneobjecttoanotherofthesameclass.Membertomembercopy(shallowcopy)
Whatarealltheimplicitmemberfunctionsoftheclass?
Orwhatareallthefunctionswhichcompilerimplementsforusifwedon'
tdefineone.?
defaultctor
copyctor
assignmentoperator
defaultdestructor
addressoperator
Whatisconversionconstructor?
constructorwithasingleargumentmakesthatconstructorasconversionctoranditcanbeusedfortypeconversion.
classBoo
{
public:
Boo(inti);
};
BooBooObject=10;
//assigningint10Booobject
Whatisconversionoperator?
classcanhaveapublicmethodforspecificdatatypeconversions.
doublevalue;
Boo(inti)
operatordouble()
{
returnvalue;
}
BooBooObject;
doublei=BooObject;
//assigningobjecttovariableioftypedouble.nowconversionoperatorgetscalledtoassignthevalue.
Whatisdiffbetweenmalloc()/free()andnew/delete?
mallocallocatesmemoryforobjectinheapbutdoesn'
tinvokeobject'
sconstructortoinitiallizetheobject.
newallocatesmemoryandalsoinvokesconstructortoinitializetheobject.
malloc()andfree()donotsupportobjectsemantics
Doesnotconstructanddestructobjects
string*ptr=(string*)(malloc(sizeof(string)))
Arenotsafe
Doesnotcalculatethesizeoftheobjectsthatitconstruct
Returnsapointertovoid
int*p=(int*)(malloc(sizeof(int)));
int*p=newint;
Arenotextensible
newanddeletecanbeoverloadedinaclass
"
delete"
firstcallstheobject'
sterminationroutine(i.e.itsdestructor)andthenreleasesthespacetheobjectoccupiedontheheapmemory.Ifanarrayofobjectswascreatedusingnew,thendeletemustbetoldthatitisdealingwithanarraybyprecedingthenamewithanempty[]:
-
Int_t*my_ints=newInt_t[10];
...
delete[]my_ints;
whatisthediffbetween"
new"
and"
operatornew"
?
workslikemalloc.
Whatisdifferencebetweentemplateandmacro?
Thereisnowayforthecompilertoverifythatthemacroparametersareofcompatibletypes.Themacroisexpandedwithoutanyspecialtypechecking.
Ifmacroparameterhasapost-incrementedvariable(likec++),theincrementisperformedtwotimes.
Becausemacrosareexpandedbythepreprocessor,compilererrormessageswillrefertotheexpandedmacro,ratherthanthemacrodefinitionitself.Also,themacrowillshowupinexpandedformduringdebugging.
Macro:
#definemin(i,j)(i<
j?
i:
j)
template:
template<
classT>
Tmin(Ti,Tj)
{
returni<
j;
}
WhatareC++storageclasses?
auto
register
static
extern
auto:
thedefault.Variablesareautomaticallycreatedandinitializedwhentheyaredefinedandaredestroyedattheendoftheblockcontainingtheirdefinition.Theyarenotvisibleoutsidethatblock
register:
atypeofautovariable.asuggestiontothecompilertouseaCPUregisterforperformance
static:
avariablethatisknownonlyinthefunctionthatcontainsitsdefinitionbutisneverdestroyedandretains=keepitsvaluebetweencallstothatfunction.Itexistsfromthetimetheprogrambeginsexecution
extern:
astaticvariablewhosedefinitionandplacementisdeterminedwhenallobjectandlibrarymodulesarecombined(linked)toformtheexecutablecodefile.Itcanbevisibleoutsidethefilewhereitisdefined.
WhatarestoragequalifiersinC++?
Theyare..
const
volatile
mutable
Constkeywordindicatesthatmemoryonceinitialized,shouldnotbealteredbyaprogram.
volatilekeywordindicatesthatthevalueinthememorylocationcanbealteredeventhoughnothingintheprogram
codemodifiesthecontents.forexampleifyouhaveapointertohardwarelocationthatcontainsthetime,wherehardwarechangesthevalueofthispointervariableandnottheprogram.Theintentofthiskeywordtoimprovetheoptimizationabilityofthecompiler.
mutablekeywordindicatesthatparticularmemberofastructureorclasscanbealteredevenifaparticularstructurevariable,class,orclassmemberfunctionisconstant.
structdata
charname[80];
mutabledoublesalary;
constdataMyStruct={"
SatishShetty"
1000};
//initlizedbycomplier
strcpy(MyStruct.name,"
ShilpaShetty"
);
//compilererror
MyStruct.salaray=2000;
//complierishappyallowed
Whatisreference?
referenceisanamethatactsasanalias,oralternativename,forapreviouslydefinedvariableoranobject.
prependingvariablewith"
&
symbolmakesitasreference.
inta;
int&
b=a;
读amp
Whatispassingbyreference?
Methodofpassingargumentstoafunctionwhichtakesparameteroftypereference.
voidswap(int&
x,int&
y)
inttemp=x;
x=y;
y=temp;
inta=2,b=3;
swap(a,b);
Basically,insidethefunctiontherewon'
tbeanycopyofthearguments"
x"
y"
insteadtheyrefertooriginalvariablesaandb.sonoextramemoryneededtopassargumentsanditismoreefficient.
Whendouse"
const"
referenceargumentsinfunction?
a)Usingconstprotectsyouagainstprogrammingerrorsthatinadvertently不经意的alterdata.
b)Usingconstallowsfunctiontoprocessbothconstandnon-constactualarguments,whileafunctionwithoutconstintheprototypecanonlyacceptnonconstantarguments.
c)Usingaconstreferenceallowsthefunctiontogenerateanduseatemporaryvariableappropriately.
WhenaretemporaryvariablescreatedbyC++compiler?
Providedthatfunctionparameterisa"
constreference"
compilergeneratestemporaryvariableinfollowing2ways.
a)Theactualargumentisthecorrecttype,butitisn'
tLvalue
doubleCube(constdouble&
num)
num=num*num*num;
returnnum;
doubletemp=2.0;
doublevalue=cube(3.0+temp);
//argumentisaexpressionandnotaLvalue;
b)Theactualargumentisofthewrongtype,butofatypethatcanbeconvertedtothecorrecttype
longtemp=3L;
doublevalue=cuberoot(temp);
//longtodoubleconversion
Whatisvirtualfunction?
Whenderivedclassoverridesthebaseclassmethodbyredefiningthesamefunction,thenifclientwantstoaccessredefinedthemethodfromderivedclassthroughapointerfrombaseclassobject,thenyoumustdefinethisfunctioninbaseclassasvirtualfunction.
classparent
voidShow()
cout<
<
"
i'
mparent"
<
endl;
classchild:
publicparent
mchild"
parent*parent_object_ptr=newchild;
parent_object_ptr->
show()//callsparent->
show()i
nowwegotovirtualworld...
virtualvoidShow()
show()//callschild->
show()
Whatispurevirtualfunction?
orwhatisabstractclass?
Whenyoudefineonlyfunctionprototypeinabaseclasswithoutimplementationanddothecompleteimplementation实现inderivedclass.Thisbaseclassiscalledabstractclassandclientwon'
tabletoinstantiateanobjectusingthisbaseclass.
Youcanmakeapurevirtualfunctionorabstractclassthisway..
voidfoo()=0;
BooMyBoo;
//compilationerror
WhatisMemoryalignment?
Thetermalignmentprimarilymeansthetendency趋向ofanaddresspointerva