C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.

Slides:



Advertisements
Similar presentations
第 2 章 初探 C++.
Advertisements

補充: Input from a text file
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第八章 类和对象.
C++程序设计 王希 图书馆三楼办公室.
C++的檔案處理 綠園.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
struct 可以在同一個名稱下擁有多種資料型態。使用struct能讓資料的存取和處理更為靈活。
資料大樓 --談指標與陣列 綠園.
函數(一) 自訂函數、遞迴函數 綠園.
程序设计II 第三讲 字符串处理.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
Object-Oriented Programming in C++ 第一章 C++的初步知识
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
第9章 C++的文件操作 “文件”,一般是指内存以外的存储介质上一批数据的集合。C++在语言层次上提供了文件操作的一系列函数用于完成文件的操作,打开、关闭文件,读取、写入文件数据等操作。 1。字符文件与二进制文件 字符文件:又称ASCII文件或文本TEXT文件,它是以一个字节存放一个ASCII码,代表一个字符。例如,32767需要使用5个字节表示,即:
计算机网络讲义 第5章 批量数据处理—数组 一维数组 排序和查找 二维数组 字符串.
第八章 文件 引述 输入输出流和文件概述 文件操作 流的格式化输出 程序举例 本章小节.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++程序设计 string(字符串类) vector(容器类).
第13章 输入输出流 王雪晶.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
第八章 文件 引述 输入输出流和文件概述 文件操作 流的格式化输出 程序举例 本章小节.
C++语言程序设计 第十一章 流类库与输入/输出.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
第 14 章 輸出與輸入.
第十三讲 文件流与 输出输入重载.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
第14章 输入输出与文件 输入输出是指程序与外部设备交换信息 C++把输入输出看成是一个数据流 输入流:外围设备流向内存的数据
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
Name1..hour //加班時數 name2..hour //請假時數
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
Chapter 2 & Chapter 3.
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
第7章 输入/输出流 文件和I/O流概述 标准I/O流的对象及其成员函数 文件流.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
C++的檔案處理 綠園.
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
第十一章 IO流与文件系统 丘志杰 电子科技大学 计算机学院 软件学院.
第 9 章 建構函式與解構函式.
第 3 章 类的基础部分 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
挑戰C++程式語言 ──第9章 函數.
本节内容 指针类型.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
第2章 文件操作 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
變數與資料型態  綠園.
資料!你家住哪裏? --談指標 綠園.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015

C++相較於C的特色 向下相容 高階的程式描述方式 物件導向程式設計 更利於用來開發大型專案, 讓程式設計師在分工時更能快速的 開發程式, 並減少錯誤的產生 物件導向程式設計 讓開發程式者簡單的使用物件所提供的功能, 來達到所需要的 效果

課程大綱 C++基礎語法 第一個C++程式: Hello World ! 輸入輸出 動態記憶體配置 字串 檔案 參考 (Reference) 重載函式 (Over Loading)

C++: Helloworld 第一個C++程式:Helloworld #include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }

C++輸入輸出 cout物件: 輸出 cin物件: 輸入 << : 將一個指定的內容傳給cout輸出 (有幾個內容就用幾個<<或>>) #include <iostream> using namespace std; int main() { int num; cin >> num; cout << num << endl; return 0; }

C++輸入輸出 試著輸入輸出不同型態的資料 請觀察跟printf函式使用上的差異 #include <iostream> using namespace std; int main() { int a; double b; char c; char d[80]; cout << "請分別輸入整數, 小數, 字元, 字串" << endl; cin >> a; cin >> b; cin >> c; cin >> d; cout << "輸入的內容為: " << endl; cout << a << endl; cout << b << endl; cout << c << endl; cout << d << endl; return 0; }

C++輸入輸出 思考: 為什麼cin/cout物件都不用跟告訴它我要印 到螢幕的資料型態, scanf/printf函式就要? 在聰明的背後… (使用物件很容易, 難在物件的設計!)

輸入含有空白字元的字串 使用cin物件提供的getline函式 (類似gets函式) 輸入字串放到指定字元陣列中 若輸入字串長度超過 最大長度-1 則自動捨去 #include <iostream> using namespace std; int main() { char a[80]; cin.getline(a, 80); cout << a << endl; return 0; }

輸入含有空白字元的字串 使用cin的>>與getline會產生像在C語言中使用 scanf與gets的問題 使用cin物件提供的cin.ignore()解決 #include <iostream> using namespace std; int main() { char a[80]; char b[80]; cin >> a; cin.ignore(); cin.getline(b, 80); cout << a << endl << b << endl; return 0; }

C++動態記憶體配置 動態記憶體配置: new 釋放記憶體: delete 配置一個資料空間,並傳回該空間的位址,語法: 配置一個給定初始值的空間,並傳回該空間的位址,語法: 指標 = new 資料型態(初始值); 釋放記憶體: delete 配置一個空間的釋放 delete 指標; #include <iostream> using namespace std; int main() { int *ptr = new int(100); cout << "空間位置:" << ptr << endl; cout << "空間儲存值:" << *ptr << endl; *ptr = 200; delete ptr; return 0; }

C++動態記憶體配置 動態記憶體配置: new 釋放記憶體: delete 配置多個資料空間,並傳回該空間的位址,語法: 配置多個空間的釋放 #include <iostream> using namespace std; int main() { int *ptr; int size, i; cout << "請輸入個數:"; cin >> size; ptr = new int[size]; cout << "請輸入內容:" << endl; for(i = 0; i < size; i++) cout << "ptr[" << i << "] = "; cin >> ptr[i]; } cout << "ptr[" << i << "] = " << ptr[i] << endl; delete [] ptr; return 0;

C++字串: string 使用C++提供的特殊字串型態string可以用來宣告 字串物件,方便我們做字串處理 宣告語法: 產生的字串物件提供下面語法可以使用: [索引]: 取得索引值代表的字元 =: 字串複製 == : 字串比對 += : 字串連結 length(): 計算字串長度 c_str(): 回傳字串位置 (常用在字串函式)

C++字串: string 範例:輸入字串後印出長度與所有字元 #include <iostream> #include <string> using namespace std; int main() { string str; int n, i; cout << "請輸入字串: "; cin >> str; n = str.length(); cout << "輸入的長度為: " << n << endl; cout << "輸入的字元為: " << endl; for(i=0; i<n; i++) cout << "[" << i << "]:" << str[i] << endl; return 0; }

C++字串: string 範例:string常用之運算 字串比對: a==b //比對a與b是否相等 字串複製: a = b // 將b複製到a 字串連結: a+=b // 將b連結到a後面 #include <iostream> #include <string> using namespace std; int main() { string a, b; a = "Hello"; cout << "請輸入b字串: "; cin >> b; if(a==b) cout << "b字串a字串相同" << endl; else cout << "b字串a字串不同" << endl; a+=b; cout << "a,b字串連結結果: " << a << endl; return 0; }

C++字串: string 範例:輸入b字串內容後儲存a string  字元陣列 字元陣列  string #include <iostream> #include <string> #include <string.h> using namespace std; int main() { char a[80]; string b; cout << "輸入string字串b: "; cin >> b; strcpy(a, b.c_str()); cout << "輸出字元陣列a: " << a << endl; return 0; } #include <iostream> #include <string> #include <string.h> using namespace std; int main() { char a[80]; string b; cout << "輸入字元陣列a: "; cin >> a; b = a; cout << "輸出string字串b: " << b << endl; return 0; }

C++檔案: fstream C++中使用fstream物件操作檔案 fstream 檔案物件(“檔名”,模式); 此物件中包含讀檔(>>), 寫檔(<<),關檔(close),強制寫回檔案 (flush),判斷檔案是否結束(eof)…等動作 常用檔案模式: ios::in 讀檔 ios::out 寫檔 ios::app 寫在檔案最後 ios::binary 二進位檔 #include <iostream> #include <fstream> using namespace std; int main() { fstream in("input.txt", ios::in); fstream out("output.txt", ios::out); char str[128]; in >> str; out << str; in.close(); out.close(); return 0; }

課程大綱 C++基礎語法 第一個C++程式: Hello World ! 輸入輸出 動態記憶體配置 字串 檔案 參考 (Reference) 重載函式 (Over Loading)

C++ 參考(Reference) 用途: 幫宣告的變數或物件取另一個名稱 代表了變數或物件的一個別名(Alias) 參考型態可以直接取得變數或物件的位址,並間 接透過參考型態別名來操作物件 作用類似於指標,但卻不必使用指標語法,也就是不必使用* 運算子來提取值。 語法: 資料型態 &參考名稱 = 變數名稱 範例: int var = 10;  // 定義變數 int &ref = var;  // 定義參考,代表var變數

C++ 參考(Reference) 參考型態一定要初始化 參考初始化後就不能改變它所代表的物件,任何指定給參考 的值,就相當於指定給原來的物件 #include <iostream> using namespace std; int main() { int var = 10; int &ref = var; cout << "var: " << var << endl; cout << "ref: " << ref << endl; ref = 20; return 0; }

C++ 參考(Reference) 參考最常使用於函式的引數列上 用來設計一個不需傳位置也能改變傳入參數值的函式 #include <iostream> using namespace std; void increment(int &n) { n = n + 1; } int main() int x = 10; increment(x); cout << x << "\n"; return 0;

練習 使用參考寫一個swap函式, 將兩個變數內容交換 ex: int a=10, b=5; swap(a,b); // a=5, b=10

C++重載函式 用途: 設計相同函式名稱, 但用法不同的函式 根據回傳值的不同或參數列個數或型態的不同,而自動呼叫 對應的函式 #include <iostream> using namespace std; void show(int x) { cout << "我有一個整數int:" << x << endl; } void show(int x, int y) cout << "我有兩個整數int:" << x << ", " << y << endl; int main() show(10); show(20, 30); return 0;

C++重載函式 根據參數的型態來決定要呼叫的函式 #include <iostream> using namespace std; void show(int x) { cout << "我是整數int:" << x << endl; } void show(double x) cout << "我是小數double:" << x << endl; int main() show(12); show(12.5); return 0;

練習 延續上頁範例,新增一個函式show將上一章的 struct Person型態中的姓名, 身高, 體重輸出 void show(struct Person x);

C++重載函式 思考: 為什麼要使用重載函式? 宣告成不同函式名 稱不好嗎? 從使用函式角度… 功能一樣但引數不同的函式不用取多個名字比較好記!