re: 猜猜看,id變成9了嗎? foobar 2008-04-02 16:16
@夢在天涯
這個(gè)有道理,有人驗(yàn)證過嗎?
re: c++晦澀語法背后的故事(一) foobar 2007-11-15 23:00
@愛上龍卷風(fēng)
汗
不要感謝foobar,還是感謝google和c++編程思想吧。。。
re: c++晦澀語法背后的故事(一) foobar 2007-11-11 17:10
@lovedday
多態(tài)是c++的一個(gè)特性 但是 c++遠(yuǎn)比這個(gè)復(fù)雜
你看看下面的代碼,希望能明白我的意思
#include <iostream>
class Base
{
public:
virtual void foo() { std::cout << "Base::foo\n"; }
void foo(int) { std::cout << "Base::foo(int)\n"; }
};
class Derived : public Base
{
public:
void foo() { std::cout << "Derived::foo\n"; }
};
int main()
{
Base b;
b.foo(); // Base's foo() is called
b.foo(3); // Base's foo(int) is called
Derived d;
d.foo(); // Derived's foo() is called. The one in Base is hidden
d.foo(3); // error, that function is also hidden
Base &ref = d;
ref.foo(); // Derived's foo() is called. It overrides the Base version
ref.foo(3); // Base's foo(int) is called
}
re: c++晦澀語法背后的故事(一) foobar 2007-11-11 17:07
@lovedday
上面說的不夠確切
你c++學(xué)的好,知道多態(tài)這個(gè)概念,但是c++有很多缺點(diǎn)
樓主的那個(gè)例子,你在理解上是有誤的
子類的確實(shí)用函數(shù)簽名hide了父類的函數(shù)
所以你調(diào)用f的時(shí)候,肯定調(diào)用了f(double)
但是用dynamic type的時(shí)候,情況就不是這樣了
nt main()
{
Base* pb = new Derived;
pb->f(10.5);
return 0;
}
輸出當(dāng)然是base
但是絕對不是子類有個(gè)函數(shù)輸出base
而確實(shí)調(diào)用了父類的函數(shù)
re: c++晦澀語法背后的故事(一) foobar 2007-11-11 16:47
@lovedday
pb是個(gè)父類指針,所以調(diào)用父類的f
Derived* pb = new Derived;
pb->f(10);
re: c++晦澀語法背后的故事(一) foobar 2007-11-11 16:20
@lovedday
class Base
{
public:virtual void f(int x);
};
class Derived: public Base
{
public:virtual void f(double* pd);
};
int main()
{
Derived* pd = new Derived();
pd->f(10); //compile error!!!
}
這個(gè)例子只有聲明沒有定義,編譯肯定有錯(cuò)
但是
在c++里,子類通過函數(shù)名字隱藏父類函數(shù),而不是通過函數(shù)簽名!
這個(gè)分析應(yīng)該沒什么問題
子類確實(shí)通過函數(shù)名字隱藏了父類的函數(shù)
re: msdn也有錯(cuò)? foobar 2007-06-04 11:52
@Mickey Mouse
應(yīng)該不是const int吧
10 20 30 都是臨時(shí)變量
re: msdn也有錯(cuò)? foobar 2007-06-04 11:22
@Mickey Mouse
vector 中存放const沒有意義?
vector中沒有const變量吧
re: msdn也有錯(cuò)? foobar 2007-06-04 11:15
@Mickey Mouse
我是感覺msdn在stl方面不如其他文檔好
re: msdn也有錯(cuò)? foobar 2007-06-04 11:09
看stl的話,就是到cppreference也比到msdn好吧