2016-08-31 18 views

答えて

2

クラスA.

class A 
{ 
    //... 
}; 

class B : public A 
{ 
    //... 
}; 

void f(const A &a); 

又は

void f(const A *a); 

または右辺値参照などのオブジェクトへの参照またはconst参照のような引数を宣言する。ここで

#include <iostream> 
#include <string> 

struct A 
{ 
    virtual ~A() = default; 
    A(const std::string &first) : first(first) {} 
    virtual void who() { std::cout << first << std::endl; } 
    std::string first; 
}; 

struct B : A 
{ 
    B(const std::string &first, const std::string &second) : A(first), second(second) {} 
    void who() { A::who(); std::cout << second << std::endl; } 
    std::string second; 
}; 

void f(A &&a) 
{ 
    a.who(); 
} 

int main() 
{ 
    f(A("A")); 
    f(B("A", "B")); 

    return 0; 
} 

その出力は

A 
A 
B 

されていますし、両方のタイプのオブジェクトのための機能をオーバーロードすることができます実証プログラムにあります。

関連する問題