国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++中對象的常引用、動態建立和釋放相關知識講解

C++中對象的常引用、動態建立和釋放相關知識講解

2021-03-13 15:43C++教程網 C/C++

這篇文章主要介紹了C++中對象的常引用、動態建立和釋放相關知識講解,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++對象的常引用
我們知道,一個變量的引用就是變量的別名。實質上,變量名和引用名都指向同一段內存單元。

如果形參為變量的引用名,實參為變量名,則在調用函數進行虛實結合時,并不是為形參另外開辟一個存儲空間(常稱為建立實參的一個拷貝), 而是把實參變量的地址傳給形參(引用名),這樣引用名也指向實參變量。

[例] 對象的常引用。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
class Time
{
  public:
  Time(int,int,int);
  int hour;
  int minute;
  int sec;
};
Time::Time(int h,int m,int s) //定義構造函數
{
  hour=h;
  minute=m;
  sec=s;
}
void fun(Time &t)
{
  t.hour=18;
}
int main( )
{
  Time t1(10,13,56);
  fun(t1);
  cout<<t1.hour<<endl;
  return 0;
}

如果不希望在函數中修改實參t1的值,可以把引用變量t聲明為const(常引用),函數原型為

?
1
void fun(const Time &t);


則在函數中不能改變t的值,也就是不能改變其對應的實參t1的值。

在C++面向對象程序設計中,經常用常指針和常引用作函數參數。這樣既能保證數據安全,使數據不能被隨意修改,在調用函數時又不必建立實參的拷貝。

每次調用函數建立實參的拷貝時,都要調用復制構造函數,要有時間開銷。用常指針和常引用作函數參數,可以提高程序運行效率。


C++對象的動態建立和釋放
使用類名定義的對象都是靜態的,在程序運行過程中,對象所占的空間是不能隨時釋放的。但有時人們希望在需要用到對象時才建立對象,在不需要用該對象時就撤銷它,釋放它所占的內存空間以供別的數據使用。這樣可提高內存空間的利用率。

在C++中,可以使用new運算符動態地分配內存,用delete運算符釋放這些內存空間。這也適用于對象,可以用new運算符動態建立對象,用delete運算符撤銷對象。

如果已經定義了一個Box類,可以用下面的方法動態地建立一個對象:

?
1
new Box;


編譯系統開辟了一段內存空間,并在此內存空間中存放一個Box類對象,同時調用該類的構造函數,以使該對象初始化(如果已對構造函數賦予此功能的話)。

但是此時用戶還無法訪問這個對象,因為這個對象既沒有對象名,用戶也不知道它的地址。這種對象稱為無名對象,它確實是存在的,但它沒有名字。

用new運算符動態地分配內存后,將返回一個指向新對象的指針的值,即所分配的內存空間的起始地址。用戶可以獲得這個地址,并通過這個地址來訪問這個對象。需要定義一個指向本類的對象的指針變量來存放該地址。如

?
1
2
Box *pt; //定義一個指向Box類對象的指針變量pt
pt=new Box; //在pt中存放了新建對象的起始地址


在程序中就可以通過pt訪問這個新建的對象。如

?
1
2
cout<<pt->height; //輸出該對象的height成員
cout<<pt->volume( ); //調用該對象的volume函數,計算并輸出體積

C++還允許在執行new時,對新建立的對象進行初始化。如

?
1
Box *pt=new Box(12,15,18);


這種寫法是把上面兩個語句(定義指針變量和用new建立新對象)合并為一個語句,并指定初值。這樣更精煉。

新對象中的height,width和length分別獲得初值12,15,18。調用對象既可以通過對象名,也可以通過指針。

用new建立的動態對象一般是不用對象名的,是通過指針訪問的,它主要應用于動態的數據結構,如鏈表。訪問鏈表中的結點,并不需要通過對象名,而是在上一個結點中存放下一個結點的地址,從而由上一個結點找到下一個結點,構成鏈接的關系。

在執行new運算時,如果內存量不足,無法開辟所需的內存空間,目前大多數C++編譯系統都使new返回一個0指針值。只要檢測返回值是否為0,就可判斷分配內存是否成功。

ANSI C++標準提出,在執行new出現故障時,就“拋出”一個“異常”,用戶可根據異常進行有關處理。但C++標準仍然允許在出現new故障時返回0指針值。當前,不同的編譯系統對new故障的處理方法是不同的。

在不再需要使用由new建立的對象時,可以用delete運算符予以釋放。如

?
1
delete pt; //釋放pt指向的內存空間


這就撤銷了pt指向的對象。此后程序不能再使用該對象。

如果用一個指針變量pt先后指向不同的動態對象,應注意指針變量的當前指向,以免刪錯了對象。在執行delete運算符時,在釋放內存空間之前,自動調用析構函數,完成有關善后清理工作。

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
主站蜘蛛池模板: 91精品国产一区二区三区四区在线 | 国产成人精品免费 | 国产中文字幕在线免费观看 | 色偷偷噜噜噜亚洲男人的天堂 | 亚洲国产精品一区在线 | 日韩成人一区 | 国产精品成人国产乱一区 | 久久久精品| 高清在线一区 | 亚洲精品欧美 | 国产在线a | 久久首页 | 一区二区视频在线观看 | 国产黄视频在线 | 免费看国产 | 国产精品一区二 | 国产视频一区二区 | av色伊人久久综合一区二区 | 亚洲精品99 | 久久99亚洲精品 | 蜜桃精品久久久久久久免费影院 | 午夜免费| 国产精品久久久久久99999 | 中文字幕一区二区三区精彩视频 | 999这里只有是极品 最新中文字幕在线 | 久久艹精品 | 亚洲精品一区二区三区精华液 | 97色婷婷成人综合在线观看 | 国偷自产一区二区免费视频 | 在线免费av电影 | 精品一区二区三区免费 | 亚洲精选一区二区 | 九九热九九 | 色婷婷综合网 | 黄色一级毛片儿 | 91大神免费观看 | www.国产| 久草福利资源 | 中文字幕一区二区三区精彩视频 | 在线a免费| 亚洲天堂免费在线 |