日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

学习C++的第四天

發(fā)布時間:2023/11/27 生活经验 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习C++的第四天 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、頭文件中的 #ifndef/#define/#endif 防止該頭文件被重復引用”
//文件路徑名:el_1\hello.h

#ifndef _HELLO /如果沒有定義 _HELLO文件

#define _HELLO /那么定義 _HELLO文件

void Hello(void); 全局函數(shù)聲明

#endif

?

2、頭文件一般用于存放函數(shù)原型

3、類本質(zhì)上是C語言中結(jié)構(gòu)體的擴充,類中不但可以包含數(shù)據(jù)成員,還可以包含函數(shù)成員,并規(guī)定了對類中成員的三級訪問權(quán)限

在public中聲明的成員可以在程序中自己進行訪問

在private和protected中聲明的成員可以被 此類的成員函數(shù) 及 聲明為友元的函數(shù)所訪問

在protected中聲明的成員可以被此類派生的類所訪問,而在private中聲明的成員則不能被此類派生的類所訪問

?

4、

/rectangle.h類的聲明放在頭文件中

class Rectangle ?/定義一個Rectangle 類
{
private:
int length , width , height; ? 長方體的長寬高
public:
Rectangle(int len,int wd,int ht); 構(gòu)造函數(shù)。。。。。。。構(gòu)造函數(shù)名與類名相同
virtual~Rectangle(void){} ? ? /析構(gòu)函數(shù)。。。。。。。。析構(gòu)函數(shù)主要用于含有指針的數(shù)據(jù)成員中釋放動態(tài)數(shù)據(jù)成員
int Volume(void); ?///返回長方體體積的函數(shù)-----------------------------改動為int Volume(Rectangle oRectangle)
};

?

///rectangle.cpp類的實現(xiàn)放在源文件中

# include"rectangle.h" ? ?//切記要用雙引號

Rectangle::Rectangle(int len, int wd, int ht)
{
length = len;
width = wd;
height = ht;
}

int Rectangle::Volume(void) ? -------------------------改為int Rectangle::Volume(Rectangle oRectangle)
{
return length*width*height;----------------------------改為 return?oRectangle.length*oRectangle.width*oRectangle.height;
}

?

///main.cpp///主函數(shù)

# include<stdlib.h>
# include<iostream>
# include"rectangle.h" 提供類Rectangle的聲明
using namespace std;

int main(void)
{
Rectangle a(6,8,9); ? ? ?利用構(gòu)造函數(shù) 構(gòu)造一個長方體a ? 此時傳入len=6 wd=8 ht=9 然后再傳給length ?width height


int v = a.Volume(); ?因為屬于Rectangle類 所以需要a. ? ? 利用length width height 計算體積 -------------改為a.Volume(a);
cout<<v<<endl;
system("pause");
return 0;
}

改完后等式仍會成立

?

5、關(guān)于 友元

??/rectangle.h類的聲明放在頭文件中

class Rectangle
{
private:
int length , width , height;
public:
Rectangle(int len,int wd,int ht);
virtual~Rectangle(void){}
friend int Volume(Rectangle oRectangle);///加了個friend 意味著該函數(shù)并不屬于Rectangle類?
};

?

///rectangle.cpp類的實現(xiàn)放在源文件中

# include"rectangle.h"

Rectangle::Rectangle(int len, int wd, int ht)
{
length = len;
width = wd;
height = ht;
}

int Volume(Rectangle oRectangle) ///友元函數(shù) 已經(jīng)在Rectangle類中聲明過------區(qū)別在于該函數(shù)不屬于Rectangle類
{
return oRectangle.length*oRectangle.width*oRectangle.height;
}

?

///main.cpp///主函數(shù)

# include<stdlib.h>
# include<iostream>
# include"rectangle.h"
using namespace std;

int main(void)
{
Rectangle a(6,8,9);

int v = Volume(a);因為不屬于Rectangle類,所以不需要a.
cout<<v<<endl;
system("pause");
return 0;
}

?

具體大概有下面兩種情況需要使用友元函數(shù):(1)運算符重載的某些場合需要使用友元。(2)兩個類要共享數(shù)據(jù)的時候。

? ??

1.2.1優(yōu)點:能夠提高效率,表達簡單、清晰。

1.2.2缺點:友元函數(shù)破環(huán)了封裝機制,盡量不使用成員函數(shù),除非不得已的情況下才使用友元函數(shù)。

?

6、c++的一大特性就是重載(overload),通過重載可以把功能相似的幾個函數(shù)合為一個,使得程序更加簡潔、高效。在c++中不止函數(shù)可以重載,運算符也可以重載。由于一般數(shù)據(jù)類型間的運算符沒有重載的必要,所以運算符重載主要是面向?qū)ο笾g的。

?

?

7、C++的參數(shù)傳遞(傳給函數(shù))

? ? <1>傳值方式:是默認方式,在調(diào)用函數(shù)時,將實參的值傳遞給函數(shù)局部存儲相應參數(shù)的副本,函數(shù)對副本操作,只改變副本的值,而不會修改實參的值

? ? <2>引用方式:引用方式需要在形參聲明時參數(shù)名前加上符號&,在調(diào)用函數(shù)時,被傳遞的不是實參的值,而是實參的地址,函數(shù)通過地址存取實參。C語言通過指針實現(xiàn)。

? ? 將數(shù)組作為值參傳遞時,由于數(shù)組名實際表示數(shù)組的起始存儲地址,傳遞的是數(shù)據(jù)第一個元素的地址,這樣對數(shù)組元素的修改本質(zhì)是對實參數(shù)組元素的修改

?

?

void swap(int &a,int &b)------------用引用&傳遞方式b實現(xiàn)
{
int t;
t = a;
a = b;
b = t;
}--------------------------------------對應swap(u,v)---------------int a=1 ;int &ra = a; 則ra=1;-------ra = ra-1;cout<<a;輸出0 ? 引用的值改變能改變實參的值

?

?


void swap(int *a,int *b)------------用指針傳遞方式實現(xiàn)
{
int t;
t = *a;
*a = *b;
*b = t;
}--------------------------------------對應swap(&u,&v)

?

8、DEVC++出現(xiàn)打開文件失敗的情況 ?有可能是32位機子然后卻選擇了64位的解決方法(右上角)

?

9、exit()

雖然現(xiàn)在大多數(shù)平臺下,直接在 main() 函數(shù)里面 return 可以退出程序。但是在某些平臺下,在 main() 函數(shù)里面 return 會導致程序永遠不退出(因為代碼已經(jīng)執(zhí)行完畢,程序卻還沒有收到要退出的指令)。換句話說,為了兼容性考慮,在特定的平臺下,程序最后一行必須使用 exit() 才能正常退出,這是 exit() 存在的重要價值。

0表示程序已經(jīng)正常執(zhí)行完畢,而非0值則表示有錯誤發(fā)生,至于非0值具體為多少則由開發(fā)者自己定義,比如1代表輸入錯誤,2代表計算錯誤之類的 10、有關(guān)C++的動態(tài)存儲分配 通常定義變量(或?qū)ο?#xff09;,編譯器在編譯時都可以根據(jù)該變量(或?qū)ο?#xff09;的類型知道所需內(nèi)存空間的大小,從而系統(tǒng)在適當?shù)臅r候為他們分配確定的存儲空間。這種內(nèi)存分配稱為靜態(tài)存儲分配; 有些操作對象只在程序運行時才能確定,這樣編譯時就無法為他們預定存儲空間,只能在程序運行時,系統(tǒng)根據(jù)運行時的要求進行內(nèi)存分配,這種方法稱為動態(tài)存儲分配。所有動態(tài)存儲分配都在堆區(qū)中進行。 當程序運行到需要一個動態(tài)分配的變量或?qū)ο髸r,必須向系統(tǒng)申請取得堆中的一塊所需大小的存貯空間,用于存貯該變量或?qū)ο蟆.敳辉偈褂迷撟兞炕驅(qū)ο髸r,也就是它的生命結(jié)束時,要顯式釋放它所占用的存貯空間,這樣系統(tǒng)就能對該堆空間進行再次分配,做到重復使用有限的資源。 c++中使用new分配的存儲單元必須用delete進行釋放 new命令的使用格式: new 被建立對象的數(shù)據(jù)類型 或 new 被建立對象的數(shù)據(jù)類型[分配存儲單元個數(shù)]------數(shù)組 new命令返回指向被建立對象的指針 delete命令的使用格式: delete 指向被釋放對象的指針 或 ? delete []指向被釋放對象數(shù)組的指針 11、在C++中類與結(jié)構(gòu)的區(qū)別在于:在結(jié)構(gòu)中默認的訪問權(quán)限是public ?而在類中默認的訪問權(quán)限是private。除此之外,類與結(jié)構(gòu)是等價的 12、算法應具有以下幾種性質(zhì):正確性、具體性、有限性、確定性、可讀性、健壯性(能對非法數(shù)據(jù)處理 不應死機或出現(xiàn)異常結(jié)果) 13、間接運算符 *和某元素的地址 連在一起以表示 該元素 14、對于數(shù)組a[10]來說 ?a+i 等價于 &a[i] ? 所以 ? *(a + i) 等價于 a[i] ? ? ?特殊的 a等價于 &a[0]

# include<iostream>
using namespace std;
int main()
{
int a[10];
*(a+1)= 5;
cout<<a[1];
return 0;
}

?

15、 &a[9] - 3 = a +9 - 3 = a +6 = &a[6] ? ? ? ?&a[9] - &a[6] = a+9-a-6=3 ?除此之外,其他任何對地址的運算操作都是不允許的

?

轉(zhuǎn)載于:https://www.cnblogs.com/wshyj/p/6262516.html

總結(jié)

以上是生活随笔為你收集整理的学习C++的第四天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。