c/c++整理--c++面向对象(2)
生活随笔
收集整理的這篇文章主要介紹了
c/c++整理--c++面向对象(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、看代碼寫結(jié)果——c++類成員的訪問
<span style="font-size:18px;">#include <iostream> using namespace std; #define public private<span style="white-space:pre;"> </span>(1) class Animal { public:<span style="white-space:pre;"> </span>(2) void MakeNoise(); }; int main() { Animal animal; animal.MakeNoise();<span style="white-space:pre;"> </span>(3) return 0; }</span>(1)正確。把public宏定義為private。 (2)正確。定義public成員。注意:由于public已經(jīng)被定義為private,因此這里的MakeNoise()成員函數(shù)實際上是private的。 (3)錯誤。對象不能訪問類的私有成員函數(shù)
二、類成員的初始化
找錯 <span style="font-size:18px;">#include <iostream> using namespcae std; class Obj{ int i, j; public: Obj(int k) : j(k), i(j) { } void print() { cout<<i<<endl<<j<<endl; } }; int main() { Obj obj(2); obj.print(); }</span>這里初始化順序與變量聲明順序一致,而不是按照出現(xiàn)在初始化列表中的順序。這里i在j之前聲明,所以構造時i也是在j之前被初始化,所以第8行先執(zhí)行i(j),這時j的值為隨機值,故i的值也是隨機值,然后執(zhí)行j(k),所以j為2.
三、看代碼寫結(jié)果——靜態(tài)成員變量的使用
<span style="font-size:18px;">#include <iostream> using namespace std; class Myclass { public: Myclass(int a, int b, int c); void GetNumber(); void GetSum(); private: int A; int B; int C; int Num; static int Sum; }; int Myclass::Sum = 0; Myclass::Myclass(int a, int b, int c) { A = a; B = b; C = c; Num = A+B+C; Sum = A+B+C; } void Myclass::GetNumber() { cout<< "Number = " << Num << endl; } void Myclass::GetSum() { cout<< "Sum = " << Sum << endl; } int main() { Myclass M(3, 7, 10), N(14, 9, 11); M.GetNumber(); N.GetNumber(); M.GetSum(); N.GetSum(); return 0; }</span> 靜態(tài)成員被當做該類型的全局變量。對于非靜態(tài)變量,每個類對象都有自己的復制品,而靜態(tài)成員對每個類的類型只有一個復制品。靜態(tài)成員只有一份,由該類類型共享。
總結(jié)
以上是生活随笔為你收集整理的c/c++整理--c++面向对象(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UDT源码剖析(二):UDT自带例程re
- 下一篇: C++/C中mutalbe与volati