c++类注意点

类的调用

1) 若A类想在类体内实例化对象b,则B类需在A类定义之前有完整的定义。
class A
{
    public:
    B b;//实例化对象b---->>>(错误)B类没有在A类之前没有定义
    void fun_A()
    {
        b.fun_B();
    }
};
class B
{
    public:
    void fun_B()
    {
        cout<<"this is fun_B"<<endl;
    }
};

把B类放在A类之前定义即可

class B
{
    public:
    void fun_B()
    {
        cout<<"this is fun_B"<<endl;
    }
};
class A
{
    public:
    B b;///实例化对象b----->>(正确)
    void fun_A()
    {
        b.fun_B();
    }
}
2) B类的成员函数是在类体外定义,而A类想要调用。

B类需在A类前作前向声明,而且A类不能实例化B类对象,只能声明B类指针或引用

class A 
{
   public:
   B *l
  void fun_A()//---->>错误(类体内不能调用B类成员函数)
  {
       l->fun_B();
  }
};
class B
{
   public:
   void fun_B()
    {
        cout<<"this is fun_B"<<endl;
    } 
};
int main()
{
    A a;
    a.fun_A();
    return 0;
}

所以在一个类没有完整的定义时,另一个类是不能调用其成员。

#include <iostream>
using namespace std;
class B;//---->>B类前向声明
class A 
{
   public:
   B *l;//---->>声明一个B类指针l(或声明一个引用B &l)
   void fun_A()//---->>A类成员函数声明()
};
class B
{
   public:
   void fun_B()
  {
      cout<<"this is fun_B"<<endl;
  }
};
void A::fun()//---->>正确(A类成员函数定义(B类已有的定义))
{
    l->fun_B();
}
int main()
{
    A a;
    a.fun();
    return 0;
}
发布了17 篇原创文章 · 获赞 30 · 访问量 1822

猜你喜欢

转载自blog.csdn.net/qq_37451250/article/details/103206058