c++如何禁止函數的傳值調用操作-創(chuàng)新互聯(lián)

這篇文章主要介紹了c++如何禁止函數的傳值調用操作,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)長期為1000多家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為鶴崗企業(yè)提供專業(yè)的成都做網站、網站設計,鶴崗網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

代碼編譯運行環(huán)境:VS2017+Debug+Win32

按照參數形式的不同,C++應該有三種函數調用方式:傳值調用、引用調用和指針調用。對于基本數據類型的變量作為實參進行參數傳遞時,采用傳值調用與引用調用和指針調用的效率相差不大。但是,對于類類型來說,傳值調用和引用調用之間的區(qū)別很大,類對象的尺寸越大,這種差別越大。

傳值調用與后面兩者的區(qū)別在于傳值調用在進入函數體之前,會在棧上建立一個實參的副本,而引用和指針調用沒有這個動作。建立副本的操作是利用拷貝構造函數進行的。因此,要禁止傳值調用,就必須在類的拷貝構造函數上做文章。

可以直接在拷貝構造函數中拋出異常,這樣就迫使程序員不能使用拷貝構造函數,否則程序總是出現(xiàn)運行時錯誤。但是,這不是一個好的辦法,應該在編譯的階段就告訴程序員,不能使用該類的拷貝構造函數。

1.不顯示定義拷貝構造函數可行嗎?

#include <iostream>
using namespace std;

class A
{
public:
	int num;
	A(){num=5;}
};

void show(A a)
{
	cout<<a.num<<endl;
}

int main()
{
	A obj;
	show(obj);
}

網頁題目:c++如何禁止函數的傳值調用操作-創(chuàng)新互聯(lián)
文章分享:http://bm7419.com/article2/cechoc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、云服務器、Google電子商務、做網站微信公眾號

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網站優(yōu)化