一个接受类和派生类作为参数的函数

时间:2016-08-31 15:30:07

标签: c++ class inheritance reference pass-by-reference

如何创建一个函数F,它接受A类和从A派生的B类,仅用于它的唯一参数?

A类和B类的构造函数和析构函数是不同的。

1 个答案:

答案 0 :(得分:2)

将参数声明为类A的对象的引用或const引用。

$('#form').attr('onsubmit','return true;');

class A
{
    //...
};

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

void f( const A &a );

或者像右值参考一样。

这是一个示范程序

void f( const A *a );

它的输出是

#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;
}

或者你可以为这两种类型的对象重载函数。