1. 程式人生 > >C++過載函式的使用

C++過載函式的使用

#include <iostream>
using namespace std;
class A{
public:
    A(char* par){cout << "A::A" << endl;}
    A(const A& other){cout << "copy" << endl;}
    A& operator=(const A& other){cout << "operator =" << endl;}
};

void test(char* a){ 
    cout << "test==>char*" << endl;
}

void test(const A& a){ 
    cout << "test==>const A&" << endl;
}

int main()
{
    char* str = "gg";
    test(str);//呼叫void test(char* a)

    test(A(str));//呼叫void test(const A& a)
    return 0;
}

================================

-->若函式void  test(const A& a)定義為const test(A& a), 則test("hh")呼叫會失敗,引用型別初始化錯誤

(invalid initialization of reference of type ‘A&’ from expression of type ‘char*’)

相關推薦

C++過載函式

C++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,即函式的引數列表不同,也就是說用同一個運算子完成不同的運算功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。 函式過

C++過載函式 const形參 引用指標 const_cast

 一般來說,對於過載函式來說,由於頂層const不影響傳入函式的物件,所有兩個函式只是頂層const的區別的話,兩個函式是等價的,定義為過載函式是非法的。      但是,另一方面,對於指標和引用來說,可以通過區分形參指向的是常量還是非常量來實現函式過載。此時的const是

關於vs2017中c過載函式的使用方式記錄

目前大部分教材中c語言的編譯環境是devc等編譯器,而學生往往選擇使用功能更為強大、全面的vs等編譯器。在此記錄本人在vs2017編譯環境下對原c中不相容函式的過載使用方式。scanf,在vs2017中推薦使用scanf_s,若要繼續使用scanf則去要去專案屬性處調節c++

C++過載函式的使用

#include <iostream> using namespace std; class A{ public: A(char* par){cout << "A::A" << endl;} A(const A&

c++過載函式的簡單運用

#include<iostream> #include<cmath> using namespace std; int max1(int a , int b); int max1(int a , int b ,int c); doubl

c++過載函式為什麼不能用返回值來區別呢?

C++過載函式為什麼不能用返回值來區別呢?答:C++呼叫一個函式是可以忽略其返回值的,這種情況下編譯器就無法根據返回值型別來確定呼叫哪一個函式。     所以,過載不能用返回值型別來區別。另外:C++過載,即 同作用域下,同函式名,引數不同(包括型別、個數、順序)。

C++過載(2):通過成員函式和友元函式過載

分別通過成員函式和友元函式完成過載 #include <iostream> using namespace std; class Complex { public: Complex(double real =0,double imag=0):real(real),imag(i

C++小結--函式過載

1 什麼是函式過載 在C++中,一個函式名有多個函式體的實現方式就叫做函式過載。換句話說,我們使用同一個函式,傳入不同的引數,會返回不同的呼叫結果。 2 為什麼需要函式過載 函式過載可以提高函式呼叫的靈活性,我們不必再為函式名名而苦惱。比如在C語言中,我們要計算加法,可以寫如

[Visual Studio C++] [MFC 除錯錯誤]:str.Format()不存在與引數列表匹配的過載函式

1.編譯問題描述: str.Format(“%d”,m_number)不存在與引數列表匹配的過載函式,紅色波浪線出現在“ . ”下方 2.錯誤程式碼:                    

C++學習--函式過載

C++支援函式的過載,函式的過載說的是在同一個程式出現多個同名的函式,實現的是同一類的功能。例如:求和,有時需要求整型的和、有時求浮點型的和,有時求和的個數不同。所以,函式的過載在這方面給程式提供了極大的便利。 函式過載需要引數個數、引數型別或者引數順序三者至少要有一種不同。因為系統是根據引數找

C++】函式過載

C語言沒有函式名過載,C++有函式名過載。 函式名相同,函式引數列表不同,稱為函式名過載。函式引數列表不同包括: 1)引數個數不同; 2)引數型別不同; #include "stdio.h" double find_max(double a, double b, do

C++】函式的預設值 && 函式過載

一、函式的預設值 1>預設值一般寫在宣告中(可以寫多個宣告) int Func(int a, int b, int c = 20); Func(10,20);   和   Func(10,20,30); 都可以   2>自左向右依次賦值(

C++:函式過載、inline函式C/C++相互呼叫

一、過載(overloading) :函式名字相同,而引數不同。返回型別可以相同也可以不同。      若有題目為:實現兩個數相加,一般我們都會想到如下程式碼: int Sum(int a,int b) { return a

c++虛擬函式(override)和過載函式(overload)的比較

1. 過載函式要求函式有相同的函式名稱,並有不同的引數序列;而虛擬函式則要求完全相同; 2. 過載函式可以是成員函式或友元函式,而虛擬函式只能是成員函式; 3. 過載函式的呼叫是以所傳遞引數的差別作為呼叫不同函式的依據,虛擬函式是根據物件動態型別的不同去呼叫不同

C++ 過載運算子和過載函式

前言:     運算子過載和函式過載體現了面向物件技術的多型性。多型性機制不僅增加了面向物件軟體系統的靈活性,進一步減少了冗餘資訊,而且顯著提高了軟體的可重用性和可擴充性。     從實現的角度來講,多型性可以劃分為兩類:編譯時的多型性和執行時的多型性。在C+

c++中使用指標呼叫函式和使用指標呼叫類物件的()過載函式

使用函式指標時,指標可以像函式名一樣,直接加括號和引數列表呼叫;也可先解引用再呼叫 //include directories... using namespace std; void testFun() { cout<<"this is

C++】函式過載

函式過載 函式過載:是函式的一種特殊情況,C++允許在同一 作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表(引數個數或型別或順序)必須不同,常用來處理實現功能類似資料型別不同的問題。 概念: 函式過載是指在同一作用域內,可以有一組具有相同函式名,不同引數列表的函

C++的運算子的過載函式的使用

       過載函式是用來處理函式功能類似但引數的資料型別不同的問題,即使用同名函式宣告各種不同功能,但是這些同名的函式的形式引數(引數的個數、型別和順序)必須不同。本文主要介紹構運算子的過載函式的構造。      &nbs

c/c++ 過載運算子 函式呼叫運算子

過載運算子 函式呼叫運算子 把一個類的物件a,當成函式來使用,比如a(),所以需要過載operator()方法。過載了函式呼叫運算子的類的物件,就是函式物件了。 還有什麼是函式物件呢??? lambda是函式物件 std::bind函式的返回值是函式物件 函式是函式物件 函式指標是函式

C++筆記(十九)——運算子過載函式

一、作用: 使複雜函式的理解更直觀,程式更加簡單易懂 二、運算子過載函式的形式是: 返回型別 operator 運算子符號(引數說明) {   //函式體的內部實現 } void operator +(Test&, Text&) { //函