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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++类的内联成员函数应放在哪

發(fā)布時(shí)間:2023/12/10 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类的内联成员函数应放在哪 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天復(fù)習(xí)C++ Primer的時(shí)候,看到了關(guān)于C++類的內(nèi)聯(lián)成員函數(shù)的放置,應(yīng)該放在頭文件中。那么這到底是為什么

呢?僅僅是一種代碼規(guī)范問(wèn)題還是必須這樣做呢?

下面我就來(lái)講講我自己的理解吧。要徹底理解這個(gè)問(wèn)題,首先就要了解下函數(shù)的聲明和定義了。我們知道,函數(shù)可以

在多處聲明,但只能在一個(gè)地方定義,不然就會(huì)出現(xiàn)重定義。大部分函數(shù)默認(rèn)是外部鏈接,而inline函數(shù)默認(rèn)為內(nèi)部鏈

接。也就是說(shuō)inline函數(shù)只能在本文件中使用,對(duì)其他文件是不可見(jiàn)的。一般我們使用某個(gè)類的時(shí)候,都是在文件中加

上該類的頭文件,以便我們可以使用該類的接口。而我們類的成員函數(shù)的實(shí)現(xiàn)都是放在相應(yīng)的.cpp文件中的,而在.h

文件中聲明。這樣我們便可以通過(guò).h文件中的成員函數(shù)的聲明找到其定義,繼而使用成員函數(shù)了。但如果將inline函數(shù)

放在.cpp文件中,那么其只對(duì).cpp文件有效,這樣我們就無(wú)法訪問(wèn)它了。所以我們將其放在類的聲明的頭文件中,這

樣通過(guò)包含該頭文件來(lái)使用它。

下面寫個(gè)實(shí)際的例子來(lái)說(shuō)明一下,我先把內(nèi)聯(lián)函數(shù)放到類聲明的頭文件中:

/*test.h*/ #ifndef TEST_H #define TEST_H#include <iostream> using std::cout; using std::endl;class test { public:test():x(10){}inline void print();void display (int y); private:int x; };void test::print() {cout << x << endl; }#endif
/*test.cpp*/ #include <iostream> #include "test.h" using std::cout; using std::endl;void test::display(int y) {cout << x * y << endl; }
運(yùn)行結(jié)果正常,下面來(lái)看看將內(nèi)聯(lián)函數(shù)放到.cpp中去:


/*test.h*/ #ifndef TEST_H #define TEST_H#include <iostream> using std::cout; using std::endl;class test { public:test():x(10){}inline void print();void display (int y); private:int x; };#endif

/*test.cpp*/ #include <iostream> #include "test.h" using std::cout; using std::endl;void test::print() {cout << x << endl; }void test::display(int y) {cout << x * y << endl; }
測(cè)試函數(shù)和上面的main.cpp是一樣的。這是出現(xiàn)了錯(cuò)誤:

error LNK2019: 無(wú)法解析的外部符號(hào) "public: void __thiscall?test::print(void)" (?print@test@@QAEXXZ),該符號(hào)在函

數(shù) _main 中被引用。如果我將測(cè)試函數(shù)改為:

int main() {test T;T.display(10);//T.print();system("pause");return 0; }
那么運(yùn)行結(jié)果正常。從此可以得出結(jié)論:內(nèi)聯(lián)函數(shù)放在頭文件或者.cpp中都是沒(méi)有錯(cuò)的,但如果我們需要在程序中訪

問(wèn)它,那么就必須將其放在頭文件中。


轉(zhuǎn)載自《 ?

C++類的內(nèi)聯(lián)成員函數(shù)應(yīng)放在哪








總結(jié)

以上是生活随笔為你收集整理的C++类的内联成员函数应放在哪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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