1. 程式人生 > >C++中多型性和過載

C++中多型性和過載

引數傳遞有傳值、傳址和引用三種
void f(int n){}//定義傳值方式
int a;
f(a);//呼叫傳值方式

void f(int *n){}//定義傳址方式
int a;
f(&a);//呼叫傳址方式

void f(int &n){}//定義引用方式
int a;
f(a);//呼叫引用方式

傳值方式適合一般數值傳送,並且不改變原資料,但要消耗記憶體空間
傳址方式適合傳遞陣列、指標,由於傳遞的是地址,所以直接操作會改變原資料
引用方式和指標比較類似,是相對比較新的一種方式,一般情況下能用傳址的就能用引用,而且用引用更方便一點。

要體現面向物件的多型性不是傳遞方式的原因,是函式過載。
即同一函式名可以定義不同的副本,在對不同調用時有不同的反應
如:
void f(){}//不帶引數
void f(int a){}//帶一個整形引數
void f(int a,int b)//帶兩個整形引數
void f(double a){}//帶一個double型引數
void f(char a){}//帶一個字元型引數

以下依次對它們呼叫:
f();
int a;
f(a);
int a1,a2;
f(a1,a2);
double b;
f(b);
char c;
f(c);

區別函式過載可以是
引數型別(整形、實型、字元型等)
引數個數
但不能是返回型別,如:
int f(){}
double f(){}
這樣是不行的,編譯要出錯。

相關推薦

C++過載

引數傳遞有傳值、傳址和引用三種void f(int n){}//定義傳值方式 int a; f(a);//呼叫傳值方式 void f(int *n){}//定義傳址方式 int a; f(&a);//呼叫傳址方式 void f(int &n){}//定義引用方式 int a; f(a);//呼

C++虛擬函式怎麼回答

1.定義:       多型性可以簡單地概括為“一個介面,多種方法”,程式在執行時才決定呼叫的函式,它是面向物件程式設計領域的核心概念。多型(polymorphism),字面意思多種形狀。   C++多型性是通過虛擬函式來實現的,虛擬函式允許子類重新定義成員函式,而子類重新

C++ 第六章(虛擬函式)上篇

目錄 多型性 多型性的定義 例子 虛擬函式 虛擬函式的作用 什麼情況下使用虛擬函式 虛解構函式 純虛擬函式和抽象類 什麼是多型性 面對不同的物件傳送同一個訊息,不同的物件

C++ 第六章(虛擬函式)下篇(虛解構函式純虛擬函式)

一,虛解構函式 如果用new運算子建立了臨時物件,若基類中有解構函式並且定義了一個指向該基類的指標變數。在程式用帶指標引數的delete運算子撤銷物件時,會發生:系統只執行基類的解構函式,而不執行派生類的解構函式。 #include<iostream> using

C++程式設計(八)—— 虛擬函式

一、多型性         靜態聯編所支援的多型性稱為編譯時的多型性,當呼叫過載函式時,編譯器可以根據呼叫時所使用的實參在編譯時就確定應該呼叫哪個函式;動態聯編所支援的多型性稱為執行時的多型性,這由虛擬函式來支援。虛擬函式類似於過載函式,但與過載函式的實現策略不同,即對虛擬

C++ 過載 覆蓋

面向物件的三大特徵: 1.封裝:保證物件自身資料的完整性、安全性 2.繼承:建立類之間的關係,實現程式碼複用、方便系統的擴充套件 3.多型:相同的方法呼叫可實現不同的實現方式。多型是指兩個或多個屬於不同類的物件,對於同一個訊息(方法呼叫)作出不同響應的方式。(同樣的

c++之(動態繫結)

多型性 指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。C++支援兩種多型性:編譯時多型性,執行時多型性。   a、編譯時多型性:通過過載函式實現    b、執行時多型性:通過虛擬函式實現  多型性可以簡單地概括為“一

深入理解C++的

C++程式語言是一款應用廣泛,支援多種程式設計的計算機程式語言。我們今天就會為大家詳細介紹其中C++多型性的一些基本知識,以方便大家在學習過程中對此能夠有一個充分的掌握。 多型性可以簡單地概括為“一個介面,多種方法”,程式在執行時才決定呼叫的函式,它是面向物件程式設計領域的核心概念。多型(

Java Challengers#3:繼承

    根據Venkat Subramaniam的傳說,多型性是面向物件程式設計中最重要的概念。多型性 -或者物件基於其型別執行專門操作的能力 - 是使Java程式碼具有靈活性的原因。命令,觀察者,裝飾者,策略等設計模式以及Gang Of Four建立的許多其他模式都使用

Java靜態動態有何區別

靜態多型性指的是程式在編譯時,系統就能決定呼叫哪個函式,如過載。 動態多型性指在執行中才能動態確定操作指標所指的物件,主要通過虛擬函式和重寫來實現。 java 的多型機制遵循一個原則:當父類物件引用變數引用子類物件時,被引用物件的型別而不是引用變數的型別決定了呼叫誰的成

C++【【覆蓋】

多型=虛擬函式+指標/引用 關於多型: 形狀:位置,繪製 矩形:寬度、高度,繪製 圓形:半徑,繪製 Shape / \ Rect Circle 如果將基類中的

第六章實驗:虛擬函式

     答:靜態聯編是指聯編工作在編譯階段完成的,這種聯編過程是在程式執行之前完成的,又稱為早期聯編。要實現靜態聯編,在編譯階段就必須確定程式中的操作呼叫(如函式呼叫)與執行該操作程式碼間的關係,確定這種關係稱為束定,在編譯時的束定稱為靜態束定。靜態聯編對函式的選擇是基於指向物件的指標或者引用的型別。其優點

實驗 6 虛擬函式

實驗目的和要求瞭解靜態聯編和動態聯編的概念。掌握動態聯編的條件。實驗內容1、分析並除錯下列程式。//sy6_1.cpp#include<iostream>using namespace std;class Base{public:virtual void f(fl

——運算子過載(一)

多型性是指不同的物件收到相同的資訊是,產生不同的行為。C++中可以用同一個函式名呼叫不同內容的函式,這些函式執行不同但又類似的操作,這樣就可以用同一個函式名呼叫不同內容的函式。 一個源程式經過編譯,連

C++的實現原理

多型是面向物件的基本特徵之一。而虛擬函式是實現多型的方法。那麼virtual function到底如何實現多型的呢?1 基類的記憶體分佈情況請看下面的sample class A { void g(){.....} }; 則sizeof(A)=1; 如果改為如下: class A { public:   

C++)C++的靜態繫結動態繫結

靜態繫結和動態繫結是C++多型性的一種特性。 1、物件的靜態型別和動態型別: 物件的靜態型別: 物件在宣告是採用的型別,在編譯期確定; 物件的動態型別: 當前物件所指的型別,在執行期決定,物件的動態型別可以更改,但靜態型別無法更改。 class B{ }; clas

C++類物件虛擬函式與的實現

在面向物件程式設計時,有時會遇到這種需求:我們希望同一個方法在基類和派生類中實現不同的功能,即體現出行為上的多型性。一般有兩種方法可以實現這種需求,其一是在派生類中重新定義基類中方法,其二是使用虛擬函式。這裡主要記錄利用虛擬函式實現多型性的方法。 類中虛擬函式的定義方法 虛擬函式

C++的理解舉例

多型性是面向物件程式的一個重要特徵,下面通過程式來理解程式的多型性: //多型性 #include<iostream> using namespace std; class Point { public: Point(float x=0,float y=0

詳解C++的純虛擬函式(虛擬函式區別)& 以及理解

#include <iostream> #include <cstdio> using namespace std; class A { public:     void foo()     {         printf("1\n");    

C#的繼承封裝知識點總結

最重要的特性之一。任何類都可以從另外一個類繼承,即這個類擁有它所繼承類的所有成員。在OOP中,被繼承的類稱為父類或基類。C#提供了類的繼承機制,但C#只支援單繼承,不支援多重繼承,即在C#中一次只允許繼承一個類,不能同時繼承多個類。利用繼承機制,使用者可以通過增加、修改或替換類中方法對這個類進行擴充,以適應不