国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

從零開始學習C++(類和對象)

2019-11-08 03:14:04
字體:
來源:轉載
供稿:網友

C++語言是面向對象的語言。所以類是C++里面的重點,類是對象的模板。

類的作用就是用來保存數據的。如果有個類class Date 就是用來保存日期的。保存了數據就可以通過其他成員函數去操作數據。

類的聲明部分

#include<iostream>using namespace std;class date { public: void SetDate(int y, int m, int d); int IsLeapYear(); void PRint();private: int year, month, day;};

類的實現部分

void date::SetDate(int y, int m, int d){ year = y; month = m; day = d;}void date::Print(){ cout << year << "." << month << "." << day << endl;}int date::IsLeapYear(){ return(year %4 == 0 && year % 100 != 0) || (year % 400 == 0);}

類的主體

int main(){ int m; date h; h.SetDate(2000, 1, 8); if (h.IsLeapYear()) cout << "2000 is leap year" << endl; h.Print(); system("pause"); return 0; }

函數體有兩種寫法,一種是把函數體直接寫到頭后面,類的內部,叫做內聯函數。內聯函數最終產生的軟件比較大,但是會快一點。

可以把函數寫在類外面,使類的聲明部分不會太大,又保持內聯。實現如下:

inline void date::SetDate(int y, int m, int d){}

或者把函數寫在外面,叫做外聯函數。一般情況下都喜歡寫到外面

int date::IsLeapYear()

作用域操作符,表示函數式Date的成員函數


公有和私有

公有

私有:如果有個函數在私有部分,private,則無法訪問。什么都不寫的情況下,默認是私有private的。其中有面向對象設計原則。

保護:protected。要學到繼承和派生才會詳細講解。


創建第二個類

#include<iostream> using namespace std; class date; class time {}; class people { public: void study(); void woring(date d); private: double height; double weight; double saving; date *Birthday; people *child; time t; };

Date放在最后面就找不到了,C++只能前項引用,會出現syntax error: identifier ‘date’。所以要在第一行加入class date;

people class里面在放people child不允許,則換成people *child

記得C++每個class后面都要有分號;semicolon

C++里還可以實現函數重載,兩個函數可以重名,但是里面的參數不能相同

為什么后面要使用指針呢? 如果前面有一整個class,就可以不用指針;如果前面只有class前項引用,就必須使用指針;

關于類中可否初始化的問題? class date { public: void SetDate(int y, int m, int d); int IsLeapYear(); void Print(); private: int year, month, day; }; int date::IsLeapYear() { return(year %4 == 0 && year % 100 != 0) || (year % 400 == 0); } void date::SetDate(int y, int m, int d) { year = y; month = m; day = d; } void date::Print() { cout << year << "." << month << "." << day << endl; }

類里面用大括號封裝了數據和方法,把類實例化就變成了對象。 對象有屬性和行為。


對象

int main() { int m; date h; date date1; date dates[31]; date *pdate; date &date2 = date1; h.SetDate(2000, 1, 8); date1.SetDate(2000, 1, 2); dates[0].SetDate(2000, 1, 2); pdate = new date(); pdate->SetDate(2000, 1, 2); (*pdate).Print(); if(h.IsLeapYear()) cout << " is leap year" << endl; h.Print(); system("pause"); return 0; }date1和數組都可以直接操作,數組保存31個對象date2引用date1,date2就是date1的別名解引用 (*pdate).Print();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岢岚县| 隆化县| 华坪县| 长春市| 建阳市| 环江| 望城县| 梁河县| 太原市| 临泉县| 十堰市| 永定县| 永定县| 时尚| 余庆县| 县级市| 兰西县| 都安| 咸丰县| 珲春市| 固原市| 孟津县| 贡山| 信丰县| 天津市| 始兴县| 屏东市| 赤壁市| 龙里县| 东丽区| 香河县| 土默特右旗| 阿拉善左旗| 茂名市| 许昌县| 泰兴市| 盐亭县| 仙游县| 伊宁县| 新乡市| 万州区|