在C ++中传递一个类对象作为参数

假设我有一个名为foo的类,主要包含用于显示数据的数据和类栏。 所以如果我有名为foobar的foo对象实例,我会如何将它传递给bar :: display()? 像void bar :: display(foobar&test)这样的东西?


是的,差不多。 或者,如果可能的话,使用const引用来表示该方法不会修改作为参数传递的对象。

class A;

class B
{
    // ...
    void some_method(const A& obj)
    {
        obj.do_something();
    }
    // ...
};

#include <iostream>

class Foo 
{
    int m_a[2];

    public:
    Foo(int a=10, int b=20) ;           
    void accessFooData() const;

};

Foo::Foo( int a, int b )
{
    m_a[0] = a;
    m_a[1] = b;
}

void Foo::accessFooData() const
{
    std::cout << "n Foo Data:t" << m_a[0] << "t" << m_a[1] << std::endl;
}

class Bar 
{
    public:
    Bar( const Foo& obj );
};

Bar::Bar( const Foo& obj )
{
    obj.accessFooData();
   // i ) Since you are receiving a const reference, you can access only const member functions of obj. 
   // ii) Just having an obj instance, doesn't mean you have access to everything from here i.e., in this scope. It depends on the access specifiers. For example, m_a array cannot be accessed here since it is private.
}

int main( void )
{
    Foo objOne;
    Bar objTwo( objOne ) ;
    return 0 ;
}

希望这可以帮助。


所以有两种方式将类对象传递给函数参数:i)将对象的副本传递给函数,这样,如果对象中的函数完成任何更改,将不会体现在原始对象中

ii)将对象的基地址作为参数传递给函数。在该方法中,如果调用函数在对象中进行了任何更改,则它们也将反映在原信号对象中。

比如看看这个链接,它清楚地表明了传递值的用法,并且通过引用明确地证明了Jim Brissom的答案。

链接地址: http://www.djcxy.com/p/94567.html

上一篇: Passing a class object as an argument in C++

下一篇: Bootstrap (4.0) dropdown in navbar cannot position right in relation to viewport