auto_ptr指針和explicit的使用

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之後就不允許轉換了。就會直接報錯


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