c++面向?qū)ο蟮囊恍﹩栴}1.0

  1. 構(gòu)造函數(shù)

    特殊的成員函數(shù),給對(duì)象的初始化,不需要用戶調(diào)用,建立對(duì)象時(shí),自動(dòng)執(zhí)行
    它的函數(shù)名字與類相同,可以重載,沒有返回值和函數(shù)類型。
    如果不寫構(gòu)造函數(shù),類會(huì)給出一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)。

    復(fù)制構(gòu)造函數(shù)
    a.程序新建立一個(gè)對(duì)象時(shí),用另一個(gè)對(duì)象對(duì)它初始化。
    b. 函數(shù)的參數(shù)為對(duì)象。
    c. 函數(shù)的返回值為對(duì)象。


  2. 特殊的數(shù)據(jù)成員

    常數(shù)據(jù)成員,const聲明,其值不能改變。 const string sex;
    靜態(tài)數(shù)據(jù)成員,static聲明,屬于類,只能在類外初始化。 static double height;
    引用數(shù)據(jù)成員,&聲明,是本人的別名。 char &c;


  3. 特殊的函數(shù)

    常成員函數(shù),只能引用本類的數(shù)據(jù)成員,不能修改它們。 void prconst()const
    靜態(tài)成員函數(shù),屬于類,在類外調(diào)用可以用類名加域運(yùn)算符號(hào),也可以對(duì)象名調(diào)用函數(shù)。 Person::prHeight();


  4. 內(nèi)存的動(dòng)態(tài)分配和撤銷。

    c語(yǔ)言用malloc,free函數(shù),c++用new,delete。 //懷念java了。
    Person *p3 = new Person("王五",88); 開辟了存放對(duì)象的空間,并初始化值。
    delete p3; //回收開辟的內(nèi)存。





    相關(guān)的代碼

#include <iostream>
#include<string>
using namespace std;

class Person {
protected:
    string name;
    int age;
    const string sex; //const形數(shù)據(jù)成員,引用形數(shù)據(jù)成員,只能通過初始化列表初始化。
    static double height;
public:
    Person() {

    }
    Person(string na) :name(na) //初始化列表,要和成員函數(shù)對(duì)應(yīng)
    {

    }
    Person(string na,int ag,string se) :name(na),age(ag),sex(se) //初始化列表,要和成員函數(shù)對(duì)應(yīng),不然會(huì)出錯(cuò)
    {

    }
    /*
      this指針指向本對(duì)象
    */
    Person(string name, int age) {  //采用this指針
        this->name = name; //java里面是 this.name=name; 搞混了。
        this->age = age;
    }

     void prconst()const {
        cout << "const成員函數(shù)"<<endl;

 }
 //靜態(tài)成員函數(shù),只能調(diào)用靜態(tài)成員,它屬于類,可以用類名調(diào)用,加域作用符號(hào),但是非靜態(tài)成員函數(shù)也可以調(diào)用它
    static void prHeight() { 
        cout << height << endl;
     }

    void toString();
    /*
    析構(gòu)函數(shù),對(duì)象生命周期結(jié)束,會(huì)自動(dòng)執(zhí)行析構(gòu)函數(shù)
      先構(gòu)造的后析構(gòu),后構(gòu)造的先析構(gòu)。
    */
    ~Person() {
        cout << "析構(gòu)函數(shù)" << endl;
        print2();
    }

    /*
    復(fù)制構(gòu)造函數(shù)與類同名,采用引用,即別名。
    */
    Person(const Person&p) 
    {  //復(fù)制構(gòu)造函數(shù)
        cout << "復(fù)制構(gòu)造函數(shù) ";
        name = p.name;
        age = p.age;
    }
/*
 內(nèi)置函數(shù),減小時(shí)間開銷
  c++類置函數(shù)要關(guān)鍵字inline聲明,但是類中定義的成員函數(shù)可以省略inline,
  因?yàn)檫@些成員函數(shù)已經(jīng)被隱含的指定為內(nèi)置函數(shù)。如果類外定義,需要加上inline關(guān)鍵字。
     內(nèi)置成員函數(shù),是不包括循環(huán)等控制結(jié)構(gòu)的函數(shù)。
*/

inline void print1() {
        cout << "name=" << name << endl;
  }
    void print2(){
        cout << "name=" << name << "  " << "age=" << age << " " << "sex=" << sex <<endl;
    }

};
/*
類外定義函數(shù)時(shí),必須在函數(shù)名前面加上類名。因?yàn)樵陬愅舛x不知道函數(shù)屬于哪個(gè)類。
  class_name :: function()
*/
void Person::toString() {
    cout << "[" << "name=" << name << "  " << "age=" << age << "]" << endl;
}

double Person::height = 1.72; //靜態(tài)成員初始化

int main()
{
    cout<<"類的大小:" << sizeof(Person) << endl;
    Person p("王小二");
    p.print1();
    Person::prHeight(); //類調(diào)用
    Person  peo("張三", 66); //java是 Person  peo=new Person("張三", 66);
    peo.toString();

    Person pe = peo; //等價(jià)于Person pe(peo);
    pe.toString();
    
    Person p1("李四", 22, "男");
    p1.print2();

    /*用復(fù)制構(gòu)造函數(shù),給const對(duì)象賦值。
    const對(duì)象不能修改,只能調(diào)用const函數(shù)。
    */
    const Person p2; 
    p2.prconst();

    Person *p3 = new Person("王五",88); //new動(dòng)態(tài)申請(qǐng)一塊內(nèi)存
    p3->toString();
    delete p3; //動(dòng)態(tài)釋放內(nèi)存,防止內(nèi)存泄漏 ,有些懷念java,GC機(jī)制。


    system("pause");
    return 0;
}



結(jié)果
代碼結(jié)果.PNG


決定開始寫博客了,設(shè)計(jì)到j(luò)ava,c++等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,090評(píng)論 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,655評(píng)論 1 51
  • 總體上必須清楚的:1)程序結(jié)構(gòu)是三種: 順序結(jié)構(gòu) , 循環(huán)結(jié)構(gòu)(三個(gè)循環(huán)結(jié)構(gòu)), 選擇結(jié)構(gòu)(if 和 switch...
    靜熙老師哈哈哈閱讀 911評(píng)論 1 20
  • 一個(gè)博客,這個(gè)博客記錄了他讀這本書的筆記,總結(jié)得不錯(cuò)?!渡疃忍剿鰿++對(duì)象模型》筆記匯總 1. C++對(duì)象模型與內(nèi)...
    Mr希靈閱讀 5,881評(píng)論 0 13
  • 偶然翻了高中一些同學(xué)的朋友圈,熟悉的,陌生的,發(fā)現(xiàn)他們身邊的人換了又換,如今也已物是人非。原來(lái)我們的生活圈子真的改...
    菜小菜and畫畫的小菜閱讀 284評(píng)論 0 2

友情鏈接更多精彩內(nèi)容