C++中空類編譯器不會產生以下哪個成員函式
阿新 • • 發佈:2022-03-21
-
當類為空時,編譯器會為這個類合成建構函式、解構函式、拷貝建構函式、賦值過載函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class
Demo
{
};
void
func()
{
Demo d1,d2,d5;
//預設建構函式
Demo d3(d1);
//預設拷貝建構函式
Demo d4 = d2;
//預設拷貝建構函式
d5 = d4;
//預設賦值過載
//區域性物件自動銷燬,呼叫預設解構函式
}
int
main()
{
func();
return
0
;
}
-
沒有私有建構函式,編譯器合成的預設函式都是public的,不是private,如果類中建構函式是私有的,就不能在類的外部建立物件(在內部還是可以建立,要在外部使用物件,就要用到靜態函式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class
Demo
{
public
:
static
Demo * getObject()
//為了返回物件持久存在,返回堆上物件指標
{
Demo d;
//類的內部還是可以建立物件
return
new
Demo();
}
int
geta()
{
return
a;
}
void
destroy()
{
delete
this
;
}
private
:
Demo() :a(
0
){}
int
a;
};
int
main()
{
Demo *p = Demo::getObject();
p->geta();
p->destroy();
return
0
;
}
所以,這題應該選C