程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 泛型指針,原生指針和智能指針,指針智能

泛型指針,原生指針和智能指針,指針智能

編輯:C++入門知識

泛型指針,原生指針和智能指針,指針智能


1. 泛型指針
泛型指針有多種含義。
(1) 指void*指針,可以指向任意數據類型,因此具有“泛型”含義。
(2) 指具有指針特性的泛型數據結構,包含泛型的迭代器、智能指針等。
廣義的迭代器是一種不透明指針,能夠實現遍歷訪問操作。通常所說的迭代器是指狹義的迭代器,即基於C++的STL中基於泛型的iterator_traits實現的類的實例。
總體來說,泛型指針和迭代器是兩個不同的概念,其中的交集則是通常提到的迭代器類。
2. 原生指針就是普通指針,與它相對的是使用起來行為上象指針,但卻不是指針。
說“原生”是指“最簡樸最基本的那一種”。因為現在很多東西都抽象化理論化了,所以“以前的那種最簡樸最基本的指針”只是一個抽象概念(比如iterator)的表現形式之一。
3. 智能指針是C++裡面的概念:由於 C++ 語言沒有自動內存回收機制,程序員每次得自己處理內存相關問題,但用智能指針便可以有效緩解這類問題。
引入智能指針可以防止出現懸垂指針的情況
一般是把指針封裝到一個稱之為智能指針類中,這個類中另外還封裝了一個使用計數器,對指針的復制等操作將導致該計數器的值加1,對指針的delete操作則會減1,值為0時,指針為NULL

怎區分泛型指針,原生指針與智可以指針?

1. 泛型指針
泛型指針有多種含義。
(1) 指void*指針,可以指向任意數據類型,因此具有“泛型”含義。
(2) 指具有指針特性的泛型數據結構,包含泛型的迭代器、智能指針等。
廣義的迭代器是一種不透明指針,能夠實現遍歷訪問操作。通常所說的迭代器是指狹義的迭代器,即基於C++的STL中基於泛型的iterator_traits實現的類的實例。
總體來說,泛型指針和迭代器是兩個不同的概念,其中的交集則是通常提到的迭代器類。
2. 原生指針就是普通指針,與它相對的是使用起來行為上象指針,但卻不是指針。
說“原生”是指“最簡樸最基本的那一種”。因為現在很多東西都抽象化理論化了,所以“以前的那種最簡樸最基本的指針”只是一個抽象概念(比如iterator)的表現形式之一。
3. 智能指針是C++裡面的概念:由於 C++ 語言沒有自動內存回收機制,程序員每次得自己處理內存相關問題,但用智能指針便可以有效緩解這類問題。
引入智能指針可以防止出現懸垂指針的情況
一般是把指針封裝到一個稱之為智能指針類中,這個類中另外還封裝了一個使用計數器,對指針的復制等操作將導致該計數器的值加1,對指針的delete操作則會減1,值為0時,指針為NULL
 

c語言中,既然有了泛型指針, 那為何還要有有區分數據類別的普通指針?

void*指針不能解引用。。。
普通指針的類型本身就攜帶著訪問那個對象的方法之一。。
沒有類型是無法訪問那個對象的。。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved