筆試題集(三)C 精選

2021-09-26 01:27:16 字數 3283 閱讀 9965

1、 求解下列**的列印值

#include class a

virtual void dosth()

/*//列印如下:

this is donull function

this is donull function

this is donull function

//1)如果某個方法沒有使用任何成員變數,不需要this指標,不需要動態繫結(一般來說非virtual方法),則使用null就能啟用

2)如果某個方法僅僅 使用了 靜態成員變數,也是可以的,如 如下題目3, main函式如下使用

a *pa=null;

pa->print1("this");

如果使用了其他成員變數,會產生未知錯誤,如:segmentation fault (core dumped)

*/

2、寫出列印結果並解釋

#include class a

virtual void dosth()

/*print result:

this is a

this is b

this is b

*/

3、寫出列印結果(關於 實參傳遞類引數、返回類實參、拷貝構造(預設,重寫)、靜態成員 計數器)

#include class a

//a(const a &a)

static void print(const char* msg = 0)

std::cout << "obj count = " << count << std::endl;

} ~a()

std::string foo1(void)

void bar(const std::string &str)

int main(void)

/*print result:

str addr = 0x7ffc1521a620

foo s addr = 0x7ffc1521a5c0

a1 addr = 0x7ffc1521a5c0

foo s addr = 0x7ffc1521a5e0

foo1 s addr = 0x7ffc1521a5e0

a2 addr = 0x7ffc1521a5e0

a4 addr = 0x7ffc1521a600

a5 addr = 0x7ffc1521a620

*/

5、關於靜態成員的 初始化,繼承

#include class a

; int val;

//private: //如果開啟的話,dat 成員將不能被子類繼承

static int dat;

};int a::dat = 1;

class b : public a

; int val; // 子類會覆蓋父類的同名成員變數

};//int b::dat = 2; // 如果加上這個,gcc會報錯,提示 已經有定義過了(int a::dat = 1;), 這裡就不能再重複定義了

int main(void)

6、引用的多型性

#include #include class a

;class b : public a

;void a::fun1(void)

void a::fun2(void)

void b::fun1(void)

void b::fun4(void)

int main(void)

7、引用

// case 1

int s = 1;

const int &ps = s;

ps = 5; //error

s = 5; //ok

//case 2

const int s = 1;

int &ps = s; // error

8、union

#include #include #include typedef union test test_t;

int main(void)

; t.a[0] = 0xf;

t.a[1] = 0xd;

t.a[2] = 0xc;

t.a[3] = 0xb;

t.a[4] = 0xa;

std::cout << std::hex <<" t.i="<< t.i << std::endl;

std::cout << std::hex << " t.a[0]=0x" <<(int)t.a[0] << ", t.a[1]=0x" <<(int)t.a[1] << std::endl;

return 0;}/*

position order in memery

---------------------------------

char a[5] |a[4]|a[3]|a[2]|a[1]|a[0]|

char a[5] | 0xa| 0xb| 0xc| 0xd| 0xf|

int i |0xf|0xd|0xc|0xb|0xa|

---------------------------------

t.i=b0c0d0f

t.a[0]=0xf, t.a[1]=0xd

*/

9、delete new 析構執行時機

#include #include class a

; virtual ~a() ; // 1

virtual void dosomething() ;

};class b : public a;

virtual ~b() ;

virtual void dosomething() ;

};int main(void)

/*construct a

construct b

do something in b!

destructor b!

destructor a!

//如果把 1 位置析構函式的 virtual 去掉, 列印如下

construct a

construct b

do something in b!

destructor a!

*/

11、引用

12、引用

T 筆試題精選 (一)

該筆試題對於c c 的基礎細節比較重視。1 32 位機上根據下面的 問哪些說法是正確的?signed char a 0xe0 unsigned int b a unsigned char c a a.a 0 c 0 為真 b.a c 為真 c.b 的十六進製制表示是 0xffffffe0 d.上面都...

騰訊筆試題精選一

32 位機上根據下面的 問哪些說法是正確的?signed char a 0xe0 unsigned int b a unsigned char c a a.a 0 c 0 為真 b.a c 為真 c.b 的十六進製制表示是 0xffffffe0 d.上面都不對 下面哪些選項能編譯通過?int i c...

外企筆試題精選二

外企筆試題精選二 下面 是否有錯?如果有錯,錯在 struct test test int i void func int main 下面的 輸出什麼?為什麼?class test int geti int getj int main a c developer wants to handle a ...