第四章 小技巧.

Slides:



Advertisements
Similar presentations
四資二甲 第三週作業 物件導向程式設計.
Advertisements

第九讲 类与对象 (I)面向对象基础.
第八章 类和对象.
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
類別樣板 Class Template 類似函式樣板 由類別樣板產生的類別稱為類別樣版的實體(instance)
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
西安交通大学 计算机教学实验中心 大学C++程序设计教程 西安交通大学 计算机教学实验中心
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
第一章 C++编程简介 丘志杰 电子科技大学 计算机学院 软件学院.
6 使用者函數 6.1 函數定義 宣告函數 呼叫函數 呼叫多個函數 6-6
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
10 多載函數 10.1 多載概論 多載一般函數 多載成員函數 10-3
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
Name1..hour //加班時數 name2..hour //請假時數
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
程式結構&語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第三章 C++的语句和简单的程序设计 主要内容:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
Oop8 function函式.
物件導向程式設計 CH2.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第三章 数据抽象.
C语言程序设计 李祥 QQ:
Object-Oriented Programming in C++ 第二章 类和对象
C++程式設計入門 變數與運算子 作者:黃建庭.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第二章 类型、对象、运算符和表达式.
Review 1~3.
第九章 物件導向-進階.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
谭浩强编著 C++面向对象程序设计 授课教师:姬广永 学习网站:
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
Class 2005/05/25.
第三章 高级函数特性.
JAVA 程式設計與資料結構 第三章 物件的設計.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
C++程序语言设计 Chapter 14: Templates.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第四章 小技巧

 4.3 重載 例: 算乘積的函數 算兩個相乘 : 算三個相乘 : int Multiple2( int A, int B ) { return A * B; } 算三個相乘 : int Multiple3( int A, int B, int C ) { return A * B * C; }

 4.3 重載(續) Compiler會自動選取適當的函數 相同函數名稱 // 函數的重載 // 函數的重載 // 你可以看到有兩個都叫Multiple的函數 #include <iostream.h> int Multiple( int A, int B ) { return A * B; } int Multiple( int A, int B, int C ) return A * B * C; // 主程式 void main() cout << Multiple( 3, 3 ) << endl; cout << Multiple( 4, 2, 5 ) << endl; 相同函數名稱

 4.3 重載(續) 重載函數要有明確的區分 ? #include <iostream.h> void Function ( double aDouble) { cout<<“double= “<<aDouble<<endl; } void Function ( float aFloat) cout<<“float= “<<aFloat<<endl; void main() Function(48); ?

4.4 預設參數值  例: Ex : Multiple ( 5, 3, 2) ; Multiple ( 5, 3) ;

 4.4 預設參數值(續) 例: viod Draw(int x, int y, int Radius, int Color);

4.4 預設參數值(續)  例:

4.4 預設參數值(續)  預設值必須擺最後 不合法的宣告

4.4 預設參數值(續)  注意 : Show (5) ? 依編譯器而定

第五章 定義自己的物件

5.1 物件導向  需要那些功能? 程序導向 需要那些物件? 物件導向

5.1 物件導向(續)  例:自動提款機系統 程序導向 

5.1 物件導向(續)  例:自動提款機系統 物件導向 

5.1 物件導向(續)  軟體IC Visual C++  MFC Borland C++  OWL

 5.2 物件 定義物件 : 存取權限 可被任意物件存取 只可被成員函數存取 // 自己定義的物件 class Employee { // 自己定義的物件 class Employee { public : char Sex; // 性別 long ID; // 員工編號 private : long Salary; // 薪水 }; 只可被成員函數存取

 5.2 物件(續) 應用實例 : 本行會有問題:由main()存取Employee 結構運算子:存取物件成員 // 如何定義物件的函數 // 如何定義物件的函數 #include <iostream.h> // 自己定義的物件 class Employee { public : char Sex; // 性別 long ID; // 員工編號 private : long Salary; // 薪水 }; // 主程式 void main() Employee Peter; Peter.Sex = 'M'; Peter.ID = 860101; Peter.Salary=30000; } 本行會有問題:由main()存取Employee 結構運算子:存取物件成員

 5.2 物件(續) 定義成員函數(一) // 如何定義物件的函數 #include <iostream.h> // 如何定義物件的函數 #include <iostream.h> // 自己定義的物件 class Employee { public : char Sex; // 性別 long ID; // 員工編號 void SetSalary( long newSalary ); long GetSalary(); private : long Salary; // 薪水 }; // SetSalary( newSalary ) // 設定薪水的值 // 參數:long newSalary:欲設定的薪水 // 傳回值:無

5.2 物件(續) 指定函數的作用範圍 void Employee::SetSalary( long newSalary ) { Salary = newSalary; } // GetSalary() // 傳回薪水的值 // 參數:無 // 傳回值:long:薪水的值 long Employee::GetSalary() return Salary; // 主程式 void main() Employee Peter; Peter.Sex = 'M'; Peter.ID = 860101; Peter.SetSalary( 30000 ); cout << Peter.GetSalary() << endl; 指定函數的作用範圍

 5.2 物件(續) 定義成員函數 (二) class Employee { public : char Sex; // 性別 long ID; // 員工編號 void SetSalary( long newSalary ); Salary = newSalary; } long GetSalary(); return Salary; private : long Salary; // 薪水 };

 5.3 實例 向量函數 class Vector { private : double x; // X 座標 double y; // Y 座標 }

5.3 實例(續)  向量函數 向量的乘法

 5.3 實例(續) 向量函數 // 自己定義的物件 #include <iostream.h> // 定義一個向量 // 自己定義的物件 #include <iostream.h> // 定義一個向量 class Vector { private : double x; // X 座標 double y; // Y 座標 public : // Set( x1, y1) // 設定向量初始值 void Set( double x1, double y1 ) x = x1; y = y1; }

5.3 實例(續) // Show() // 顯示向量 // 參數:無 // 傳回值:無 void Show() { // 顯示向量 // 參數:無 // 傳回值:無 void Show() { cout << "[" << x << "," << y << "]\n"; } // Add( x1, y1 ) // 加另一個向量 // 參數: double x1:另一個向量的x值 // double y1:另一個向量的y值 void Add( double x1, double y1 ) x += x1; y += y1; // Add( Vector AnotherVec ) // 參數:Vector AnotherVec:另一個向量

5.3 實例(續) // 傳回值:無 void Add( Vector AnotherVec ) // 主程式 void main() { // 傳回值:無 void Add( Vector AnotherVec ) { x += AnotherVec.x; y += AnotherVec.y; } // Multiple( Constant ) // 乘一個常數 // 參數:double Constant:欲乘的常數 void Multiple( double Constant ) x *= Constant; y *= Constant; }; // 主程式 void main() { Vector Vec1( 3, 5 ); Vector Vec2( 1, 1 ); Vec1.Set (3, 5); Vec2.Set (1,1); Vec1.Add( 2, 2 ); Vec2.Multiple( 5 ); Vec1.Show(); Vec2.Show(); }

 5.3 實例(續) 向量相加: 重載函數 Void Vector::AddVector(Vector AnotherVec) { x+=AnotherVec.x; y+=AnotherVec.y; } Void Vector::Add(Vector AnotherVec) { x+=AnotherVec.x; y+=AnotherVec.y; }

  5.3 建構與解構元(續) 建構元 : 與物件同名的函數 解構元 : 函數被破壞時呼叫 Vector::Vector( double x1 = 0, double y1 = 0 ) { // 函數被呼叫時要做的工作 x = x1; y = y1; }  解構元 : 函數被破壞時呼叫 Vector::~Vector() { //函數被破壞時要做的工作; }

 5.3 建構與解構元(續) 向量函數 // 自己定義的物件 #include <iostream.h> // 定義一個向量 // 自己定義的物件 #include <iostream.h> // 定義一個向量 class Vector { private : double x; // X 座標 double y; // Y 座標 public : // 建構元 // 參數:double x1:另一個向量的x值 //  double y1:另一個向量的y值 Vector( double x1 = 0, double y1 = 0 ) x = x1; y = y1; }

5.3 建構與解構元(續) // Show() // 顯示向量 // 參數:無 // 傳回值:無 void Show() { // 顯示向量 // 參數:無 // 傳回值:無 void Show() { cout << "[" << x << "," << y << "]\n"; } // Add( x1, y1 ) // 加另一個向量 // 參數: double x1:另一個向量的x值 // double y1:另一個向量的y值 void Add( double x1, double y1 ) x += x1; y += y1; // Add( Vector AnotherVec ) // 參數:Vector AnotherVec:另一個向量

5.3 建構與解構元(續) // 傳回值:無 void Add( Vector AnotherVec ) // 主程式 // 傳回值:無 void Add( Vector AnotherVec ) { x += AnotherVec.x; y += AnotherVec.y; } // Multiple( Constant ) // 乘一個常數 // 參數:double Constant:欲乘的常數 void Multiple( double Constant ) x *= Constant; y *= Constant; }; // 主程式 void main() { Vector Vec1( 3, 5 ); Vector Vec2( 1, 1 ); Vec1.Add( 2, 2 ); Vec1.Add( Vec2 ); Vec2.Multiple( 3 ); Vec1.Show(); Vec2.Show(); }

5.4 挑戰  向量內積  內積(dot)=a*b+c*d 向量的乘法

5.4 挑戰(續) 以物件導向的觀念  加入向量內積(dot)的功能