C++中用new,new和delete是C++提供的內建操作符,不是函數,不需要包含頭文件
int *p=new int; 或者 int *p=new int(10); 它在分配內存時可以同時進行賦值的
*p=10; //賦值
delete p; new 用完後必須用delete刪除,不能用free釋放
int *p=new int[10],連續分配10個int,就如在堆裏做了一個數組 ,連續的10個int (用new來創建數組)
for(int i=0;i<10;i++){
p[i]=i;
}
delete [ ]p;//一個要加一個括號,告訴C++刪除的是一個數組
如果想要分配的不是一個基礎類型(int 等。。),如類等,只能用new來分配內存
<2>、C++支持三種頭文件,1.傳統的C頭文件,如<stdio.h>
2.也支持<stdio.hpp>3.<stdio>
<3>、20140807--volatile關鍵字 C++不會幫忙自行優化程序
<4>、自己定義一個命名空間:
namespace zhujy{void func(int i){
cout<<"zhujy func"<<endl;}
}
namespace itcast{
void func( int i){
cout<<"itcast func"<<endl;
}
}
using namespace itcast; //使用命名空間
func(10);
無名命名空間(很少用):
namespace { //函數只能在這個空間內用了
void func(int i){
cout<<"zhujy func"<<endl;
}
}
<5>、如果一個類成員變量和一個全局變量重名,那麼在類成員函數當中默認訪問的是類的成員變量.
在類的內部訪問全局標識,關鍵字::
如 ::a, 則這個a是全局變量a,而不是類成員a
<6>、初始化成員列表只能在構造函數使用
***const成員必須用初始化成員列表賦值 ,因爲在類裏是不能直接賦值的,類不佔內存空間
***引用數據成員必須用初始化成員列表賦值
<7>、平常的實例對象,都是在棧裏構造對象的。在堆裏構造對象,用new。
man *p=new man; //調用沒有對象的構造函數,在堆裏面實例化一個對象(爲nam類分配內存,就是實例化??)
man *p=new man("hello",100); //調用有參數的構造函數
delete p; //釋放內存空間,會自動調用析構函數(malloc不會自動調用析構函數)
<8>、(20140807--4--46:00)拷貝構造函數:指向自己的引用
man::man(const man &it)
<9>、explicit man( const char *s,int i)
明確的告訴系統就要用我自己寫的這個構造函數,不要自己造一個出來