亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這兩種寫法都沒有報錯,個人覺得第一種更直觀方便一下。但為什么要分開呢?

這兩種寫法都沒有報錯,個人覺得第一種更直觀方便一下。但為什么要分開呢?

C C++
qq_花開花謝_0 2022-10-19 19:15:34
初學VC,在學習過程中,書上提到,函數的定義和聲明分開有好處,特別是在內聯函數時,我通過VC上測試,在建內聯函數時,inline int a(){return 1:} 與inline int a();inline int a(){return 1;}在查找資料的過程中,看到int a(){return 1:} 如果這樣連著寫就表示將這個函數定義為了內聯函數,請問是嗎?而分開寫,定義一個內聯函數的話,就需要在函數前加inline,是不是?這就是為什么要分開與不分開的區別?分開的好處在于很方便的可以將這個函數寫義為內聯或者普通函數。
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

可以不分開。
分開的目的一般是為了將聲明(包括注釋)放在一塊(比如頭文件里),這樣當你需要查閱某個函數的功能時可以直接在這一塊里查找,比較方便。
當然,還有一些情況必須要分開,比如兩個函數交叉調用:
int i = 10;
void foo();
void bar();
void foo() {if (i > 0) {--i,bar();}}
void bar() {foo();}
這種情況如果不分開的話無論哪個函數放在前面都不行。

查看完整回答
反對 回復 2022-10-24
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

調用函數比求解等價的表達式要慢得多,在大多數的機器,調用函數要做很多的工作,要先保存寄存器,并在返回時恢復,程序還需要轉向一個新位置執行
內聯函數可以避免函數調用的開銷
在一個函數前面加inline 將其指定為內聯函數
inline 內斂說明對編譯器只是一個建議 編譯器可以選擇忽略這個建議

類的例子
class Screen{
public:
typedef std::string::size_type =index;
char get() const{return contents[cursor];} //在類聲明定義的函數就是內聯的
inline char get(index ht, index wd)const; //顯示聲明為內聯 將在類外定義
index get_cursor() const;
//........
}
//類聲明中聲明的內聯 不用再加內聯
char Screen:get(index r ,index c) const
{.......}
//定義中說明為內聯 在聲明中沒有
line Screen::index Screen::get_cursor() const
{.......}

在聲明和定義處指定內聯inline 都是合法的 在類外部定義inline的一個好處是使得類容易閱讀
而且你發布這個類時 只需提供hpp文件和dll 可以起到隱藏你的實現的作用


查看完整回答
反對 回復 2022-10-24
  • 2 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號