[閒聊] 今天面試問的問題

看板C_and_CPP (C/C++)作者 (沒事多聊天~ 歡迎打屁)時間16年前 (2009/09/10 23:32), 編輯推噓20(20033)
留言53則, 12人參與, 最新討論串1/2 (看更多)
其中一題,我覺得蠻有趣的 class A { public: virtual void f(int); virtual void f(double); virtual void g(int i=10); virtual void h(); }; class B: public A { public: void f(complex<double>); void g(int i=20); void h(int); }; int main() { A a; B b; A *pa=new B(); B *pb=new B(); a.f(1.0); b.f(1.0); pa->f(1.0); a.g(); b.g(); pa->g(); pb->g(); a.h(); b.h(); pa->h(); pb->h(); delete pa; delete pb; return 0; } 以上的每個member function call實際上是呼叫到哪個實體? 傳入的參數是? 有可能出現甚麼問題呢? 不會很難(因為我都會,顆顆XD), 但是觀念要有。大家可以無聊看看。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.98.235

09/10 23:36, , 1F
要是以後被火了需要找工作, 履歷還是別寫我會C++好了Q_Q
09/10 23:36, 1F

09/10 23:41, , 2F
是不是訊連考的 我怎麼曾相似....
09/10 23:41, 2F

09/10 23:41, , 3F
是一個什麼繪聲繪影的部門= =
09/10 23:41, 3F

09/10 23:46, , 4F
A *pb=new B(); 題目是不是 B *pb 我記得是考virtual dstr
09/10 23:46, 4F

09/10 23:46, , 5F
觀念@@
09/10 23:46, 5F

09/10 23:48, , 6F
我好像有點忘記了 題目應該不是兩個都是A型態的指標吧??
09/10 23:48, 6F

09/10 23:53, , 7F
A *pa= &b; 是考這個嗎?
09/10 23:53, 7F

09/10 23:57, , 8F
可是如果是=&b 那觀念不是跟new B();一樣嘛??
09/10 23:57, 8F

09/11 00:13, , 9F
喔 我打錯了 是一個A一個B 哈哈
09/11 00:13, 9F
※ 編輯: cplusplus 來自: 122.124.98.235 (09/11 00:13)

09/11 00:13, , 10F
面試了十幾家囉 只有一家問這個 YA 你講的那家 別說太明
09/11 00:13, 10F

09/11 00:15, , 11F
重點已經不在基本的virtual function機制了
09/11 00:15, 11F
※ 編輯: cplusplus 來自: 122.124.98.235 (09/11 00:18)

09/11 00:23, , 12F
我覺得i=10 i=20實在太刁了...沒寫過的人應該不會知道吧??
09/11 00:23, 12F

09/11 01:03, , 13F
這題太狠了
09/11 01:03, 13F

09/11 01:05, , 14F
好難,還是考這份比較好 http://tinyurl.com/nw8fxb ^.^a
09/11 01:05, 14F

09/11 01:13, , 15F
....現在開始學炸雞排還來不來得及....Q_Q~
09/11 01:13, 15F

09/11 01:22, , 16F
我不知道b.h()會呼叫到什麼耶orz 不是會hiding嗎..
09/11 01:22, 16F

09/11 01:24, , 17F
pb->h()應該也不會過吧.. 明早來compile試試好了
09/11 01:24, 17F

09/11 01:25, , 18F
樓上+1, override一個函數,會shadow所有同名overload
09/11 01:25, 18F

09/11 01:26, , 19F
我有一個不懂的是b.f(1.0)為啥會去呼叫complex的
09/11 01:26, 19F

09/11 01:27, , 20F
有辦法避免這種呼叫嘛? 我還天真的亂加個explicit = = error
09/11 01:27, 20F

09/11 01:27, , 21F
一樣是hiding的問題 b根本不知道有a的兩個f喔~
09/11 01:27, 21F

09/11 01:28, , 22F
b的namespace裡根本沒有f(int)和f(double)
09/11 01:28, 22F

09/11 01:28, , 23F
當然只能呼叫f(complex<double>)
09/11 01:28, 23F

09/11 01:28, , 24F
complex<T> 有定義來自於 T 的自動轉型..
09/11 01:28, 24F

09/11 01:35, , 25F
我是因為去年面試考了這份讓我奮發 狂再貴版發問...大受打擊
09/11 01:35, 25F

09/11 01:40, , 26F
...我覺得yoco貼的那份更難 我有三四題根本沒聽過XD
09/11 01:40, 26F

09/11 01:46, , 27F
YACO那份很有趣 剛好看過C++ template metaprogramming
09/11 01:46, 27F

09/11 01:46, , 28F
不過有些東西 公司裡面應該根本碰不到就是了
09/11 01:46, 28F

09/11 01:48, , 29F
發展與使用STL 是學術與業界的分水嶺
09/11 01:48, 29F

09/11 01:48, , 30F
locale我也沒實際用過 其他題目倒是還好 都曾在書中看到
09/11 01:48, 30F

09/11 01:48, , 31F
目前聽到有用Boost的公司只有一家 哀...
09/11 01:48, 31F

09/11 01:48, , 32F
樓上大大都好猛= = 我點了連結 又信心崩潰.....
09/11 01:48, 32F

09/11 01:49, , 33F
本來對MPL很有興趣的 但是公司裡用的機率應該是0吧...
09/11 01:49, 33F

09/11 01:51, , 34F
run-time polymorphism與compile-time polymorphism的差異?
09/11 01:51, 34F

09/11 01:51, , 35F
分別要如何達成?
09/11 01:51, 35F

09/11 01:51, , 36F
可以請大大跟我講這題嘛@@ 我只記得老師說過一句話
09/11 01:51, 36F

09/11 01:52, , 37F
多型 都是runtime判斷要呼叫誰的.....儼然他講錯了???
09/11 01:52, 37F

09/11 02:14, , 38F
...其實他沒有講錯啦 |||| 哈哈...這個polymorphism不是
09/11 02:14, 38F

09/11 02:14, , 39F
你想的那個polymorphism啦...找本metaprogramming的書吧
09/11 02:14, 39F

09/11 02:38, , 40F
yaco 是鴨子耶, 我是 yoco.. 怎麼到處都有人叫我 yaco XD
09/11 02:38, 40F

09/11 09:01, , 41F
真正八卦是,沒有一個可能會錯的地方是書上沒講過的。
09/11 09:01, 41F

09/11 09:44, , 42F
沒關係, 我也沒有把經典書都好好的看過....XD
09/11 09:44, 42F

09/11 10:22, , 43F
compile-time polymorphism就template咩
09/11 10:22, 43F

09/11 10:23, , 44F
overload應該也算polymorphism的一種(?
09/11 10:23, 44F

09/11 14:47, , 45F
20. 在template的宣告裡,typename與class的差異是? 為什麼꘠
09/11 14:47, 45F

09/11 14:47, , 46F
有typename這個keyword?
09/11 14:47, 46F

09/11 14:47, , 47F
可以請教各位大大嘛 thx~
09/11 14:47, 47F

09/11 16:13, , 48F
如果我沒記錯的話 typename與class完全同義吧?
09/11 16:13, 48F

09/11 17:56, , 49F
typename除了在template宣告之外還有明確指出後面的
09/11 17:56, 49F

09/11 17:57, , 50F
東西是型別 而不是變數的功能
09/11 17:57, 50F

09/11 20:25, , 51F
不一樣..
09/11 20:25, 51F

09/12 13:04, , 52F
如果把某型別的定義寫在別的地方時就會用到typename了
09/12 13:04, 52F

09/14 21:42, , 53F
這是....Exceptional C++
09/14 21:42, 53F
文章代碼(AID): #1AgHmQfs (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AgHmQfs (C_and_CPP)