<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                >[info]# **成員函數的性質** - 類的成員函數與一般函數的區別只是: 它是屬于一個類的成員,出現在類體中。 - 它可以被指定為private(私有的)、public(公用的)或protected(受保護的)。 - 成員函數可以訪問本類中的任何成員,可以訪問在本作用域中有效的數據。 >[info] # **類的聲明** ## **::的兩種用法:** - 訪問全局變量或全局函數(非成員函數) - 作用域區分符 如:Tdate::month Tdate::Print() ## **例子** ``` /* 在類里直接聲明和定義函數 */ #include <iostream.h> class Tdate{ public: void Set(int m,int d,int y) //置日期值 { month=m; day=d; year=y; } int IsLeapYear() //判是否閏年 { return (year%4==0&&year%100!=0)||(year%400==0); } void Print() //輸出日期值 { cout <<month <<“/” <<day <<“/” <<year <<endl; } private: int month; int day; int year; }; void main() { Tdate a; //定義Tdate類對象a a.Set(2,4,1998); a.Print(); } ``` ``` /* 在類里聲明,類外定義 */ int month; int day; int year; //定義全局變量 void Set(int month,int day,int year) //定義set函數 非成員函數 { ::month=m; ::day=d; ::year=y; } class Tdate { public: void Set(int month,int day,int year) //成員函數 { ::Set(m,d,y); //調用非成員函數 } private: int month; int day; int year; }; void main() { Tdate a; //定義Tdate類對象a a.Set(2,4,1998); a.Print(); } ``` >[info]# **在類外定義成員函數** 為了防止甲方用你編寫好的成員函數獲取利益,我們會把成員函數的定義和聲明分成兩個文件寫,只會把成員函數定義的 **obj** 文件和 **dll** 文件給對方。 ``` /* 定義tdate.h 頭文件 */ class Tdate { public: void Set(int,int,int); //成員函數聲明 int IsLeapYear(); void Print(); private: int month; int day; int year; }; ``` ``` /* 定義tdate.h 頭文件中的成員函數 */ #include <iostream.h> #include "tdate.h" void Tdate::Set(int m,int d,int y) { month=m; day=d; year=y; } int Tdate::IsLeapYear() { return (year%4==0&&year%100!=0)||(year%400==0); } void Tdate::Print() { cout <<month <<"/" <<day <<"/" <<year <<endl; } ``` >[info]# **inline內聯函數** - C++系統中會自動把類中定義的成員函數當作內聯函數 - 在程序調用這些成員函數時,并不是真正地執行函數的調用過程(如保留返回地址等處理),而是把函數代碼嵌入程序的調用點。這樣可以大大減少調用成員函數的時間開銷。 ## 注意 - 如果在**類外定義inline函數**,則必須**將類的定義和成員函數的定義放在同一個頭文件中**(或**寫在同一個源文件中**),否則編譯時無法進行置換(將函數代碼的拷貝嵌入函數調用點)。這樣做,雖然提高了程序的執行效率,但是卻降低了質量,不利于類的接口和類的實現的分離,不利于信息隱蔽。 - 只有在類外定義的成員函數規模很小而調用頻率很高時才這樣做 ## **例子** ``` class Student { pubilc: inline void display(); //聲明此函數為內置函數 private: int sum; string name; char sex; }; inline void sTUDENT::display { cout<<"sum:"<<sum<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; } ``` >[info]# **成員函數的存儲方式** 每個對象所占用的存儲空間只是該對象的數據部分所占用的存儲空間,而不包括函數代碼所占用的存儲空間,即**成員函數是被該類所有對象共享的**。 ``` /* 定義tdate.h 頭文件 */ class Tdate { public: void Set(int,int,int); //成員函數聲明 int IsLeapYear(); void Print(); private: int month; int day; int year; }; ``` ``` #include <iostream.h> #include "tdate.h" void Tdate::Set(int m,int d,int y) //定義Tdate類中的Set函數 { month=m; //不能在month前加對象名 day=d; year=y; } void Tdate::Print() //定義Tdate類中的Print函數 { cout <<month <<"/" <<day <<"/" <<year <<endl; } int Tdate::IsLeapYear() //定義Tdate類中的IsLeapYear函數 { return(year%4==0&&year%100!=0)||(year%400==0); } void main() { Tdate s; Tdate t; s.Set(2,15,1998); /*該函數會生成一個this指針,指向s的存儲空間,this=&s,在s的每個數據成員前 面都會加上this->,表示這個值賦予s中的數據成員*/ t.Set(3,15,1997); s.Print(); t.Print(); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看