C++ 面向?qū)ο缶幊?/h1>

C++ 面向?qū)ο缶幊?/b>

博客園地址:http://www.cnblogs.com/xiongxuanwen/p/4290090.html

面向?qū)ο缶幊袒谌齻€(gè)基本概念:數(shù)據(jù)抽象昼捍、繼承動(dòng)態(tài)綁定怔匣。

1 基類(lèi)和派生類(lèi)

1.1 定義基類(lèi)

在基類(lèi)中,除了構(gòu)造函數(shù)之外筷畦,任意非 static 成員函數(shù)都可以是虛函數(shù)。

基類(lèi)通常應(yīng)將派生類(lèi)需要重定義的任意函數(shù)定義為虛函數(shù)真友。

1.2 訪問(wèn)控制

(1)private ?成員

? ?通過(guò)類(lèi)對(duì)象無(wú)法訪問(wèn)類(lèi)的private成員赡突。

? ?在派生類(lèi)中不能訪問(wèn)基類(lèi)的private成員咖气。

? ?private?成員只能在當(dāng)前類(lèi)的作用域內(nèi)訪問(wèn),類(lèi)的友元也可以訪問(wèn)類(lèi)的private?成員汗洒。例如议纯,在成員函數(shù)中可以訪問(wèn)private?成員,在成員函數(shù)中還可以通過(guò)自己類(lèi)的對(duì)象來(lái)訪問(wèn)類(lèi)的private?成員溢谤。類(lèi)的作用域包括:類(lèi)定義的{}之內(nèi)瞻凤,類(lèi)定義之外的成員函數(shù)的函數(shù)體,形參列表等世杀。

class Base

{

public:

void Test1(Base& b)

{

b.iBase = 0;//有沒(méi)有問(wèn)題阀参?

}

private:

int iBase;

};

class Derived : public Base

{

public:

void Test2(Base& b)

{

b.iBase = 0;//有沒(méi)有問(wèn)題?

}

void Test3(Derived& d)

{

d.iDerived = 0;//有沒(méi)有問(wèn)題瞻坝?

}

private:

int iDerived;

};

(2)protected ?成員

? ?通過(guò)類(lèi)對(duì)象無(wú)法訪問(wèn)protected 成員蛛壳。

? ?protected 成員可被public派生類(lèi)(包括派生類(lèi)的派生類(lèi),向下傳遞)訪問(wèn),也就是說(shuō)在派生類(lèi)中可以使用基類(lèi)的protected 成員衙荐。

?? 派生類(lèi)只能通過(guò)派生類(lèi)對(duì)象訪問(wèn)其基類(lèi)的 protected 成員捞挥,派生類(lèi)無(wú)法訪問(wèn)其基類(lèi)類(lèi)型對(duì)象的 protected 成員。

1.3 派生類(lèi)

類(lèi)派生列表指定了一個(gè)或多個(gè)基類(lèi)忧吟,具有如下形式:

class classname: access-label base-class

這里 access-label 是 public砌函、protected 或 private,base-class 是已定義的類(lèi)的名字溜族,類(lèi)派生列表可以指定多個(gè)基類(lèi)讹俊。

一旦函數(shù)在基類(lèi)中聲明為虛函數(shù),它就一直為虛函數(shù)斩祭,派生類(lèi)無(wú)法改變?cè)摵瘮?shù)為虛函數(shù)這一事實(shí)劣像。派生類(lèi)重定義虛函數(shù)時(shí),可以使用 virtual 保留字摧玫,也可以不使用耳奕。

(1)派生類(lèi)一般會(huì)重定義所繼承的虛函數(shù)。如果派生類(lèi)沒(méi)有重定義某個(gè)虛函數(shù)诬像,則使用基類(lèi)中定義的版本屋群。

(2)一般情況下,派生類(lèi)中虛函數(shù)的聲明必須與基類(lèi)中的定義方式完全匹配坏挠,例外返回對(duì)基類(lèi)型A的引用(或指針)的虛函數(shù)芍躏。派生類(lèi)中的虛函數(shù)可以返回類(lèi)A的派生類(lèi)的引用(或指針)。

提示:絕對(duì)不要重新定義繼承而來(lái)的non-virtual函數(shù)

因?yàn)閚on-virtual函數(shù)是靜態(tài)綁定的降狠。一個(gè)子類(lèi)對(duì)象綁定到一個(gè)父類(lèi)指針对竣,另一個(gè)子類(lèi)對(duì)象綁定到一個(gè)子類(lèi)指針,通過(guò)父類(lèi)指針調(diào)用該函數(shù)榜配,調(diào)用的是父類(lèi)的該函數(shù)否纬,而不是子類(lèi)的函數(shù)。例如:

class Base

{

public:

voidFuncTest()

{

std::cout << "Base" << std::endl;

}

};

class Derived: public Base

{

public:

voidFuncTest()

{

std::cout << "Derived" << std::endl;

}

};

Derived d;

Base* pB = &d;

Derived* pD = &d;

d.FuncTest();//輸出“Derived”

pB->FuncTest();//輸出“Base”

pD->FuncTest();//輸出“Derived”

1.4?non-virtual 和? virtual? 函數(shù)的調(diào)用

(1) 將基類(lèi)類(lèi)型的引用或指針綁定到派生類(lèi)對(duì)象蛋褥,如果調(diào)用非虛函數(shù)临燃,則無(wú)論實(shí)際對(duì)象是什么類(lèi)型,都執(zhí)行基類(lèi)類(lèi)型所定義的函數(shù)烙心。

class Base

{

public:

void FuncTest()

{

std::cout << "Base" << std::endl;

}

};

class Derived: public Base

{

public:

};

Derived d;

Base* pB = &d;

pB->VirtFunc();//輸出“Base”

(2)將基類(lèi)類(lèi)型的引用或指針綁定到派生類(lèi)對(duì)象膜廊,如果調(diào)用虛函數(shù),則直到運(yùn)行時(shí)才能確定調(diào)用哪個(gè)函數(shù)淫茵,運(yùn)行的虛函數(shù)是引用所綁定的或指針?biāo)赶虻膶?duì)象所屬類(lèi)型定義的版本爪瓜。

class Base

{

public:

virtual void VirtFunc()

{

std::cout << "Base" << std::endl;

}

};

class Derived: public Base

{

public:

void VirtFunc()

{

std::cout << "Derived" << std::endl;

}

};

Derived d;

Base* pB = &d;

Derived* pD = &d;

pB->VirtFunc();//輸出“Derived”

pD->VirtFunc();//輸出“Derived”

1.5 虛函數(shù)與默認(rèn)實(shí)參

虛函數(shù)也可以有默認(rèn)實(shí)參。如果一個(gè)調(diào)用省略了具有默認(rèn)值的實(shí)參匙瘪,則所用的值由調(diào)用該函數(shù)的類(lèi)型定義钥勋,與對(duì)象的動(dòng)態(tài)類(lèi)型無(wú)關(guān)炬转。通過(guò)基類(lèi)的引用或指針調(diào)用虛函數(shù)時(shí),默認(rèn)實(shí)參為在基類(lèi)虛函數(shù)聲明中指定的值算灸,如果通過(guò)派生類(lèi)的指針或引用調(diào)用虛函數(shù)扼劈,則默認(rèn)實(shí)參是在派生類(lèi)的版本中聲明的值。

提示: 絕不重新定義繼承而來(lái)virtual函數(shù)的缺省參數(shù)值

不要重新定義繼承而來(lái)的non-virtual函數(shù)菲驴,但是可以重新定義一個(gè)繼承而來(lái)的virtual函數(shù)荐吵。

virtual函數(shù)是動(dòng)態(tài)綁定,而該函數(shù)的缺省參數(shù)值卻是靜態(tài)綁定赊瞬。C++這么做的就是為了提高運(yùn)行期效率先煎。

如果子類(lèi)重新定義了繼承而來(lái)的virtual函數(shù)的缺省參數(shù)值,那么使用父類(lèi)指針指向子類(lèi)對(duì)象巧涧,然后使用父類(lèi)指針來(lái)調(diào)用該函數(shù)薯蝎,所使用的默認(rèn)參數(shù)仍然是從父類(lèi)繼承而來(lái),而非子類(lèi)重新定義定義的谤绳。例如:

class Base

{

public:

virtualvoidVirtFunc(string sMsg = "Base")

{

cout << sMsg << endl;

}

};

class Derived:public Base

{

public:

void?VirtFunc(string sMsg = "Derived")

{

cout << sMsg << endl;

}

};

Derived?d;

d.VirtFunc();//輸出"Derived"

Base* pD = &d;

pD->VirtFunc();//輸出"Base",而不是"Derived"

為了避免出現(xiàn)上面這種情況占锯,必須將子類(lèi)中繼承而來(lái)的virtual函數(shù)設(shè)計(jì)的跟父類(lèi)一樣,也就是有同樣的缺省參數(shù)值缩筛。如果父類(lèi)修改了消略,子類(lèi)也必須跟著同樣修改。

替換的設(shè)計(jì)方案是:設(shè)計(jì)一個(gè) public non-virtual函數(shù)(帶有默認(rèn)參數(shù)值)來(lái)調(diào)用private virtual函數(shù)(不帶默認(rèn)參數(shù)值)瞎抛。public non-virtual函數(shù)在子類(lèi)中不能重新定義艺演,但是private virtual函數(shù)可以在子類(lèi)中重新定義。

class Base

{

public:

void Func(string sMsg = "Base")

{

VirtFunc(sMsg);

}

private:

virtual void VirtFunc(string sMsg )

{

cout << sMsg << endl;

}

};

class Derived:public Base

{

private:

virtual void VirtFunc(string sMsg)

{

cout << sMsg << endl;

}

};

D d;

d.Func();//輸出"Base"

B* pD = &d;

pD->mf();//輸出"Base"

1.6 友元關(guān)系與繼承

友元關(guān)系不能繼承:

(1)基類(lèi)的友元對(duì)派生類(lèi)的成員沒(méi)有特殊訪問(wèn)權(quán)限桐臊。

(2)友元類(lèi)的派生類(lèi)不能訪問(wèn)授予友元關(guān)系的類(lèi)胎撤。

1.7 繼承與靜態(tài)成員

如果基類(lèi)定義 static 成員,則整個(gè)繼承層次中只有一個(gè)這樣的成員断凶。無(wú)論從基類(lèi)派生出多少個(gè)派生類(lèi)伤提,每個(gè) static 成員只有一個(gè)實(shí)例。

static 成員遵循常規(guī)訪問(wèn)控制:如果成員在基類(lèi)中為 private懒浮,則派生類(lèi)不能訪問(wèn)它飘弧。

如果可以訪問(wèn)成員识藤,則既可以通過(guò)基類(lèi)訪問(wèn) static 成員砚著,也可以通過(guò)派生類(lèi)訪問(wèn) static 成員。一般而言痴昧,既可以使用作用域操作符也可以使用點(diǎn)或箭頭成員訪問(wèn)操作符稽穆。

2 轉(zhuǎn)換和繼承

2.1 派生類(lèi)到基類(lèi)的轉(zhuǎn)換

(1)指針或引用

派生類(lèi)型引用到基類(lèi)類(lèi)型引用

派生類(lèi)型指針到基類(lèi)類(lèi)型指針。

反之是不行的赶撰。

(2)對(duì)象

一般可以使用派生類(lèi)型的對(duì)象對(duì)基類(lèi)類(lèi)型的對(duì)象進(jìn)行初始化或賦值舌镶,但沒(méi)有從派生類(lèi)型對(duì)象到基類(lèi)類(lèi)型對(duì)象的直接轉(zhuǎn)換柱彻,編譯器不會(huì)自動(dòng)將派生類(lèi)型對(duì)象轉(zhuǎn)換為基類(lèi)類(lèi)型對(duì)象。

3 構(gòu)造函數(shù)和復(fù)制控制

3.1派生類(lèi)構(gòu)造函數(shù)

構(gòu)造函數(shù)和復(fù)制控制成員不能繼承餐胀,每個(gè)類(lèi)定義自己的構(gòu)造函數(shù)和復(fù)制控制成員哟楷。像任何類(lèi)一樣,如果類(lèi)不定義自己的默認(rèn)構(gòu)造函數(shù)和復(fù)制控制成員否灾,就將使用合成版本卖擅。

派生類(lèi)的合成默認(rèn)構(gòu)造函數(shù),除了初始化派生類(lèi)的數(shù)據(jù)成員之外墨技,它還初始化派生類(lèi)對(duì)象的基類(lèi)部分惩阶。基類(lèi)部分由基類(lèi)的默認(rèn)構(gòu)造函數(shù)初始化扣汪。

派生類(lèi)構(gòu)造函數(shù)的初始化列表只能初始化派生類(lèi)的成員断楷,不能直接初始化繼承成員。派生類(lèi)構(gòu)造函數(shù)只能通過(guò)將基類(lèi)包含在構(gòu)造函數(shù)初始化列表中來(lái)間接初始化繼承成員崭别。

class People

{

public:

People(std::string s1, int i1) : name("s1"),age(i1)

{

}

private:

std::string name;

int age;

};

class Student: public People

{

public:

Student(std::string s1, int i1,std::string s2) : uniName("s2"),People(s1,i1)

{

}

private:

std::string uniName;//學(xué)校名稱(chēng)

};

構(gòu)造函數(shù)初始化列表為類(lèi)的基類(lèi)和成員提供初始值冬筒,它并不指定初始化的執(zhí)行次序。首先初始化基類(lèi)紊遵,然后根據(jù)聲明次序初始化派生類(lèi)的成員账千。

一個(gè)類(lèi)只能初始化自己的直接基類(lèi)(通過(guò)將基類(lèi)包含在構(gòu)造函數(shù)初始化列表中來(lái)間接初始化基類(lèi))。

3.2 復(fù)制控制和繼承

只包含類(lèi)類(lèi)型或內(nèi)置類(lèi)型數(shù)據(jù)成員暗膜、不含指針的類(lèi)一般可以使用合成操作匀奏。

具有指針成員的類(lèi)一般需要定義自己的復(fù)制控制來(lái)管理這些成員。

(1) 派生類(lèi)的復(fù)制構(gòu)造函數(shù)

如果派生類(lèi)定義了自己的復(fù)制構(gòu)造函數(shù)学搜,該復(fù)制構(gòu)造函數(shù)一般應(yīng)顯式使用基類(lèi)復(fù)制構(gòu)造函數(shù)初始化對(duì)象的基類(lèi)部分:

class Base { /* ... */ };

class Derived: publicBase

{

public:

Derived(const Derived& d):Base(d) { /*... */ }

};

(2)派生類(lèi)賦值操作符

賦值操作符通常與復(fù)制構(gòu)造函數(shù)類(lèi)似:如果派生類(lèi)定義了自己的賦值操作符娃善,則該操作符必須對(duì)基類(lèi)部分進(jìn)行顯式賦值。

//Base::operator=(const Base&)

Derived &Derived::operator=(const Derived &rhs)

{

if (this != &rhs)//防止給自己賦值

{

Base::operator=(rhs); //調(diào)用 Base 類(lèi)的賦值操作符給基類(lèi)部分賦值

……//為派生類(lèi)Derived?的成員賦值

}

return *this;

}

(3)派生類(lèi)析構(gòu)函數(shù)

派生類(lèi)析構(gòu)函數(shù)不負(fù)責(zé)撤銷(xiāo)基類(lèi)對(duì)象的成員瑞佩。每個(gè)析構(gòu)函數(shù)只負(fù)責(zé)清除自己的成員聚磺。

class Derived: public Base

{

public:

~Derived()??? {/*... */}

};

(4)虛析構(gòu)函數(shù)

如果層次中基類(lèi)的析構(gòu)函數(shù)為虛函數(shù),則派生類(lèi)析構(gòu)函數(shù)也將是虛函數(shù)炬丸,無(wú)論派生類(lèi)顯式定義析構(gòu)函數(shù)還是使用合成析構(gòu)函數(shù)瘫寝,派生類(lèi)析構(gòu)函數(shù)都是虛函數(shù)。

建議:即使析構(gòu)函數(shù)沒(méi)有工作要做稠炬,繼承層次的根類(lèi)也應(yīng)該定義一個(gè)虛析構(gòu)函數(shù)焕阿。

在復(fù)制控制成員中,只有析構(gòu)函數(shù)應(yīng)定義為虛函數(shù)首启,構(gòu)造函數(shù)不能定義為虛函數(shù)暮屡。

建議:為多態(tài)基類(lèi)聲明為virtual析構(gòu)函數(shù)

父類(lèi)指針指向子類(lèi)對(duì)象,delete父類(lèi)指針時(shí)毅桃,如果父類(lèi)含有non-virtual析構(gòu)函數(shù)褒纲,則只有繼承自父類(lèi)的部分被銷(xiāo)毀准夷,而子類(lèi)非繼承的部分沒(méi)有被銷(xiāo)毀,也就是說(shuō)子類(lèi)對(duì)象被部分銷(xiāo)毀莺掠。解決的辦法是衫嵌,將父類(lèi)的析構(gòu)函數(shù)定義為virtual析構(gòu)函數(shù)。

class Base

{

public:

Base()

{

// std::cout << "Base的構(gòu)造函數(shù)" << std::endl;

}

~Base()

{

std::cout << "Base的析構(gòu)函數(shù)" << std::endl;

}

};

class Derived : public Base

{

public:

Derived()

{

// std::cout << "Derived的構(gòu)造函數(shù)" << std::endl;

}

~Derived()

{

std::cout << "Derived的析構(gòu)函數(shù)" << std::endl;

}

};

Base* pB = new Derived;

delete pB;//顯示“Base的析構(gòu)函數(shù)”

如果把Base的析構(gòu)函數(shù)前面添加virtual彻秆,則上面結(jié)果輸出:

Derived的析構(gòu)函數(shù)

Base的析構(gòu)函數(shù)

注意:

任何class只要帶有virtual函數(shù)渐扮,幾乎確定應(yīng)該也有一個(gè)virtual析構(gòu)函數(shù)。一般的掖棉,基類(lèi)應(yīng)該含有virtual析構(gòu)函數(shù)墓律。基類(lèi)定義了virtual關(guān)鍵字幔亥,子類(lèi)就不用添加該關(guān)鍵字了耻讽。

如果class不含有virtual函數(shù),通常表示它并不打算被用作一個(gè)基類(lèi)帕棉,所以就不應(yīng)該將析構(gòu)函數(shù)定義為virtual的针肥。

4 繼承情況下的類(lèi)作用域

4.1 名字沖突與繼承

與基類(lèi)成員同名的派生類(lèi)成員將屏蔽對(duì)基類(lèi)成員的直接訪問(wèn)。

可以使用作用域操作符訪問(wèn)被屏蔽的基類(lèi)成員:

struct Derived : Base

{

int get_base_mem() { returnBase::mem; }

};

設(shè)計(jì)派生類(lèi)時(shí)香伴,只要可能慰枕,最好避免與基類(lèi)成員的名字沖突。

4.2 作用域與成員函數(shù)

在基類(lèi)和派生類(lèi)中使用同一名字的成員函數(shù)即纲,其行為與數(shù)據(jù)成員一樣:在派生類(lèi)作用域中派生類(lèi)成員將屏蔽基類(lèi)成員具帮。即使函數(shù)原型不同,基類(lèi)成員也會(huì)被屏蔽低斋。

4.3 重載函數(shù)

如果派生類(lèi)重定義了重載成員蜂厅,則通過(guò)派生類(lèi)型只能訪問(wèn)派生類(lèi)中重定義的那些成員。

如果派生類(lèi)想要通過(guò)自身類(lèi)型來(lái)使用重載的版本膊畴,那么派生類(lèi)必須重定義所有的重載版本掘猿,但這樣會(huì)繁瑣,可以通過(guò)給重載成員提供using 聲明來(lái)達(dá)到簡(jiǎn)化的目的唇跨。

using Base::Func;//注意稠通,將所有基類(lèi)Base中的Func函數(shù)在本類(lèi)中可見(jiàn)。

4.3 名字查找與繼承

(1)首先確定進(jìn)行函數(shù)調(diào)用的對(duì)象买猖、引用或指針的靜態(tài)類(lèi)型改橘。

(2)在該類(lèi)中查找函數(shù),如果找不到政勃,就在直接基類(lèi)中查找唧龄,如此循著類(lèi)的繼承鏈往上找兼砖,直到找到該函數(shù)或者查找完最后一個(gè)類(lèi)奸远。如果不能在類(lèi)或其相關(guān)基類(lèi)中找到該名字既棺,則調(diào)用是錯(cuò)誤的。

(3)一旦找到了該名字懒叛,就進(jìn)行常規(guī)類(lèi)型檢查丸冕,查看如果給定找到的定義,該函數(shù)調(diào)用是否合法薛窥。

(4)假定函數(shù)調(diào)用合法胖烛,編譯器就生成代碼。如果函數(shù)是虛函數(shù)且通過(guò)引用或指針調(diào)用诅迷,則編譯器生成代碼以確定根據(jù)對(duì)象的動(dòng)態(tài)類(lèi)型運(yùn)行哪個(gè)函數(shù)版本佩番,否則,編譯器生成代碼直接調(diào)用函數(shù)罢杉。

5 純虛函數(shù)

在函數(shù)形參表后面寫(xiě)上 = 0 以指定純虛函數(shù)趟畏。該函數(shù)為后代類(lèi)型提供了可以覆蓋的接口,但是這個(gè)類(lèi)中的版本決不會(huì)調(diào)用滩租。

含有(或繼承)一個(gè)或多個(gè)純虛函數(shù)的類(lèi)是抽象基類(lèi)赋秀。除了作為抽象基類(lèi)的派生類(lèi)的對(duì)象的組成部分,不能創(chuàng)建抽象類(lèi)型的對(duì)象律想。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末猎莲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子技即,更是在濱河造成了極大的恐慌著洼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件而叼,死亡現(xiàn)場(chǎng)離奇詭異郭脂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)澈歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)展鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人埃难,你說(shuō)我怎么就攤上這事莹弊。” “怎么了涡尘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵忍弛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我考抄,道長(zhǎng)细疚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任川梅,我火速辦了婚禮疯兼,結(jié)果婚禮上然遏,老公的妹妹穿的比我還像新娘。我一直安慰自己吧彪,他們只是感情好待侵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著姨裸,像睡著了一般秧倾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傀缩,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天那先,我揣著相機(jī)與錄音,去河邊找鬼赡艰。 笑死胃榕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞄摊。 我是一名探鬼主播勋又,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼换帜!你這毒婦竟也來(lái)了楔壤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惯驼,失蹤者是張志新(化名)和其女友劉穎蹲嚣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祟牲,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隙畜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了说贝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片议惰。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乡恕,靈堂內(nèi)的尸體忽然破棺而出言询,到底是詐尸還是另有隱情,我是刑警寧澤傲宜,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布运杭,位于F島的核電站,受9級(jí)特大地震影響函卒,放射性物質(zhì)發(fā)生泄漏辆憔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望虱咧。 院中可真熱鬧熊榛,春花似錦、人聲如沸彤钟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逸雹。三九已至,卻和暖如春云挟,著一層夾襖步出監(jiān)牢的瞬間梆砸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工园欣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帖世,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓沸枯,卻偏偏與公主長(zhǎng)得像日矫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绑榴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容