auto_ptr智能指針不許用戶顯示調用delete,可以直接自動被指向NULL,智能指針給另一個智能指針賦值的時候,該被賦值的智能指針就指向賦值的智能指針指向的地方,而原來的智能指針則指向NULL。auto_ptr 的使用:
auto_ptr<int> a ;定義了一個int 的智能指針
int *p;
auto_ptr<int> a(p); 定義了一個int 的智能指針,指向P所指向的地址
explicit 防止了隱式類型的轉換。如下代碼所示
:
#include<iostream>
using namespace std;
class A
{
public:
A()
{
a=1;
}
A(int b)
{
a=b;
}
void print()
{
cout<<a<<endl;
}
~A(){}
private:
int a;
};
int main()
{
A l;
l=3;
l.print();
return 0;
}
如果在A類的含一個參數的構造函數前面加上explicit 則 在main函數中 l = 3就會報錯。本來這句話是 隱式將3 轉換爲A對象再賦值給l。加了explicit之後就不允許轉換了。就會直接報錯