freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c-6函數(shù)-文庫吧資料

2024-08-22 15:37本頁面
  

【正文】 參數(shù)發(fā)生錯誤的可能性隨參數(shù)表的長度的增加而提高,作為一個通用規(guī)則, 8 個參數(shù)應(yīng)該是最大值。 // ...}為防止對引用返回值的無意修改,返回值應(yīng)該被聲明為 constconst int amp。vectorint vec( ai, ai+4 )。vi, int ix ) { return vi[ix]。對返回值的任何修改都將改變被返回的實際對象,例如include vectorint amp。// 將兩個 Matrix 對象的內(nèi)容相加// 喔 ! 返回之后結(jié)果指向一個有問題的位置return result。if ( () ) return m2。m1, Matrix amp。函數(shù)結(jié)束后該引用變成未定義內(nèi)存的別名:Matrixamp。}? 當(dāng)聲明一個返回引用的函數(shù)時,應(yīng)當(dāng)知道下面兩個易犯的錯誤– 1 返回一個指向局部對象的引用。 grow( Matrix* p ) {Matrix *res。}– grow()把存儲在 val 中的值的拷貝返回到調(diào)用函數(shù) ,但調(diào)用函數(shù)不能用任何方式修改 val? 一個函數(shù)可以被聲明為返回一個指針或一個引用。例如Matrix grow( Matrix* p ) {Matrix val。 只對第二個聲明是合法的,而如下調(diào)用f()。如下的調(diào)用f( someValue )。void f( ... )。當(dāng)函數(shù)被調(diào)用時– 與顯式聲明的參數(shù)相對應(yīng)的實參進(jìn)行類型檢查– 與省略號對應(yīng)的實參則掛起類型檢查? 函數(shù) printf()是一個必須使用省略號的例子printf()的第一個參數(shù)總是 C風(fēng)格字符串int printf( const char*, ... )。void foo( ... )。? 習(xí)慣上,缺省實參在公共頭文件包含的函數(shù)聲明中指定,而不是在函數(shù)定義中。 39。)。)cursor = screenInit( , , 39。// 錯誤 , 不等價于 screenInit(24,80,39。39。 39。39。)。cursor = screenInit(66, 256, 39。 39。)cursor = screenInit(66)。// 等價于 screenInit(66, 80, 39。 39。? 下面的 screenInit()調(diào)用都是正確的char *cursor。 39。因而 putValues()的引用參數(shù)應(yīng)該被聲明如下void putValues( const vectorint amp。? 所以把容器類型的參數(shù)聲明為引用參數(shù)比較好。}? putValues()的參數(shù)是值參,即按值傳遞的參數(shù)。 i != ()1 )cout , 。// 用逗號分隔元素if ( i % lineLength != lineLength1 amp。 i )cout \n\t。 ++i ) {if ( i % lineLength == 0 amp。for ( int i = 0。 // 一行中的元素數(shù)using namespace std。因此,使用容器類型作函數(shù)參數(shù)時無需提供其長度。putValues( ar )。}cout \n。 ++i ) {cout ia[ i ]。for ( int i = 0。ia)[10] ){using namespace std。 // 錯誤 : 實參不是 10 個 int 的數(shù)組 return 0。 putValues( i )。arr)[10] )。putValues( ar, 15 )。}cout \n。amp。 // 一行滿了cout ia[ i ]。amp。 i sz。cout ( sz ) 。}include iostreamconst lineLength = 12。putValues( j, 2 )。putValues( amp。}– 下面的實現(xiàn)代碼用一個額外的參數(shù)表示數(shù)組的長度? 常見的機(jī)制是提供一個含有數(shù)組長度的額外參數(shù),例如void putValues( int[ ], int size )。 潛在的運(yùn)行錯 //誤 putValues( j )。 // ok: amp。 putValues( amp。當(dāng)編譯器對實參類型進(jìn)行參數(shù)類型檢查時并不檢查數(shù)組的長度void putValues( int[ 10 ] )。– 數(shù)組長度不是參數(shù)類型的一部分。當(dāng)用作實參的數(shù)組必須保持不變時,程序員需要保留原始數(shù)組的拷貝。void putValues( int[ 10 ] )。? 數(shù)組的長度與參數(shù)聲明無關(guān),因此下列三個聲明是等價的// 三個等價的 putValues()聲明void putValues( int* )。}該實現(xiàn)支持如下形式的 Matrix 對象的加法 a + b + c數(shù)組參數(shù)? 在 C++中數(shù)組不會按值傳遞,它是傳遞第一個元素 準(zhǔn)確地說是第 0 個元素的指針void putValues( int[ 10 ] )。m2 ){ Matrix result。當(dāng)參數(shù)是引用時,函數(shù)接收到的是實參的左值而不是值的拷貝// 使用引用參數(shù)的新實現(xiàn)Matrix operator+( const Matrix amp。c。a + amp。// ok: 這樣能行 , 但是誰喜歡這樣的程序?amp。b + amp。b 的返回類型是 Matrix 對象amp。 // 不太好 , 但還湊合// 喔 ! 這無法工作// amp。a + amp。}? 現(xiàn)在指針參數(shù)要求我們傳遞地址作為實參。即 operator+()的實參是按值傳遞的,兩個 Matrix 對象 a 和 b 的內(nèi)容被拷貝到 opertor+()函數(shù)的參數(shù)區(qū)中? 為了提高操作符函數(shù)的效率假定把參數(shù)聲明為指針:// 使用指針參數(shù)重新實現(xiàn)Matrix operator+( Matrix *m1, Matrix *m2 ){ Matrix result。// do the putation in resultreturn result。? Matrix 類對象的加法和賦值操作符用重載操作符來實現(xiàn)。}Before ptrswap(): pi: 10 pj: 20After ptrswap(): pi: 20 pj: 10i: 10 j: 20引用和指針參數(shù)的關(guān)系? 這兩種參數(shù)都允許函數(shù)修改實參指向的對象,都允許有效地向函數(shù)傳遞大型類對象? 引用必須被初始化指向一個對象,且不能再指向其他對象;指針可以指向一系列不同的對象,也可以什么都不指向? 如果一個參數(shù)可能在函數(shù)中指向不同的對象,或者可能不指向任何對象,則必須使用指針參數(shù)? 引用參數(shù)的一個重要用法是:它允許我們在有效地實現(xiàn)重載操作符的同時,還能保證用法的直觀? 目的:支持兩個 Matrix 類對象的加法和賦值操作符,使它們的用法同內(nèi)置類型一樣Matrix a, b, c。std::couti: i\tj: jstd::
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1