掌握类的各种成员方法及区别
普通的成员方法
- 属于类的作用域
- 需要有对象才能调用该方法
- 可以访问任意private成员变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| class CDate { public: CDate(int y,int m,int d): { _year=y; _month=m; _day=d; } void show() { cout<<_year<<"/"<<month<<"/"<<_day<<endl; } private: int _year,_month,_day;
}
class CGoods { public: CGoods(const char *n,int a,double p,int y,int m,int d) :_date(y,m,d) ,_price(p) {
strcpy(_name,n); _amount=a; } void show() { cout<<"_name:"<<_name<<endl; cout<<"amount:"<<_amount<<endl; cout<<"price:"<<_price<<endl; _date.show(); }
void show()const { cout<<"_name:"<<_name<<endl; cout<<"amount:"<<_amount<<endl; cout<<"price:"<<_price<<endl; _date.show(); }
static void showCGCount() { cout<<"_count:"<<_count<<endl; } private: char _name[20]; int _amount; double _price; CDate _date; static int _count; }
int CGoods::_count=0; int main() { CGoods g1("apple",10,5.5,2025,3,5); CGoods g2("banana",20,6.5,2025,3,5); const CGoods g3("orange",30,7.5,2025,3,5); g1.showCGCount(); g2.showCGCount(); CGoods::showCGCount(); g3.show(); }
|
总结:
const成员方法->const CGoods *this
- 属于类的作用域
- 调用依赖一个对象,但普通对象与常对象都可以
- const只能读不能写
普通成员方法->CGoods *this
- 属于类的作用域
- 调用依赖一个对象
静态成员方法->不会生成this指针
可以访问任意对象的static私有成员变量