c++學習筆記

C語言與c++的區別:1、c++後綴爲.cpp C語言爲.c

                  2、輸入輸出C語言爲scanf、printf、c++爲cout、cin

                  3、頭文件C語言爲stdio.h、c++爲iostream

                  4、C語言不用using namespace std;//命名空間當c++中出現同名同參的方法時可以使用名命空                       間來使兩個方法都實現。

                  5、C語言不可重載,c++可以重載

                  6、C語言不可定義空struct{}c++可以定義空的,c++的自定義類型爲class也可以使用struct

                        C語言不可以使用class

                  7、C語言是面向過程的,注重方法函數,c++的是面向過程的注重對象。

c++的四大特性:抽象、封裝、繼承、多態。

結構體內可以使用訪問限定符。不使用就默認爲公有。類默認爲私有,這也是結構體和類的區別。

struct student

{

    public:

        age;

    private:

        heavy;

}

::作用域解析符限定函數,限定了函數方法爲哪個類如果不加則爲全局函數。

返回值  類名::函數名(參數)

類不佔用空間,只有實例化分配空間後纔可對類進行操作。

this指針指向的是當前調用的對象,他是默認的。

const的作用封鎖參數,修飾函數,修飾返回類型

int * const p  p不可修改爲常量

int const *p    *p不可修改他所指向的不可修改

int const * const p    p和他所指向的都不可修改

#include<iostream>                     //#include<stdio.h>

using namespace std;//命名空間         // void Print()

class Hello                            //{

{                                      //    printf("hello word!");

 private://私有                        //}

protected://受保護                     //int main(int argc.char argv[])

public://公有                         //{

public:                                //        Print();

    void Print()                     //        return 0; 

    {                                  //}

        cout<<"hellow word!"<<endl;    //

    }                                  //

}                                      //

Int main()

{

        Hello myclass;        

            myclass.print();

         return 0;

}

實現的都是最簡單的輸出”hello word!“。

///////////(初步接觸感覺c++好麻煩。但是封裝起來比c好點。)

c++的語法和c相同。c++可以全面兼容c。

在使用字符串的時候應注意。

c++基礎由STL模板庫、空間配置器、容器、仿函數、算法、迭代器六個模塊。

運算符的重載具有重要的意義。(operator)不可重載‘&&’'.'‘||’、‘,’‘*’ ‘::’ ‘? :’ ,‘sizeof’,typedef

operator :==

class person

{    

public:   int age ;

};

bool operator ==(person const& p1,person const &p2)

{

        if(p1.age==p2.age)

            return ture;

        else return false;

}

operator: ++()前增量    ++(Int)後增量

class   Test

{

private:

        int   value;

public:

        test(int x=3):value(x) {}

     Test &operator++();//前增量

     Test &operator++(int);//後增量

     void show()

    {

        cout<<"my value="<<value<<endl;

    }

};
 
//前增量 Test& 是指返回一個Test的地址

Test &Test::operator++()

    {

        ++value;

        return *this;

    }

//後增量

Test& Test::operator++(int)

{

    Test tmp(*this);//創建臨時對像

    ++value;       //再增量

    return tmp; //返回臨時對像
}
 
 






}


分配空間用的是new和delete。多少個new就有多少個delete,否則會造成內存泄露。

delete時注意不要釋放空的無效的。(invalid pointer)

類裏具有6個默認函數:默認構造、析構函數、賦值構造、拷貝構造、取地址、靜態取地址

類外對象只能訪問公有。

繼承得到的派生類不能訪問基類私有。

template :模板類時注意template<typename(class也可以) Type>後直接接的是類.

文件的操作:fopen,fclose。

this指針指的是當前調用的對象。

new的作用有:分配空間和定位、

深拷貝與淺拷貝。默認爲淺拷貝。深拷貝分配空間淺拷貝不分配空間。使用另外的空間記錄拷貝次數,

若需要的是深拷貝則另外開闢空間,淺拷貝的話就將數值加一,刪除就減一。這裏需要對等號的重載。

多態是將基類的虛函數表替換爲派生類的函數地址,當基類派生類有同名函數時,派生類方法會覆蓋基類方法

基類函數爲虛函數時,派生類必須對該方法定義,

純虛函數不可以創建對象。

智能指針:std::auto_ptr、booth::scoped_ptr、booth::shared_ptr、booth::scoped_array、

booth::intrusive_ptr、booth::weak_ptr、booth::shared_array

是將智能指針包含了 reset() 方法,如果不傳遞參數(或者傳遞 NULL),則智能指針會釋放當前管理的內存。如果傳遞一個對象,則智能指針會釋放當前對象,來管理新傳入的對象。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章