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 ...