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),則智能指針會釋放當前管理的內存。如果傳遞一個對象,則智能指針會釋放當前對象,來管理新傳入的對象。