类继承和友谊项目

时间:2014-05-28 20:09:28

标签: c++ class inheritance friend access-control

我偶然发现了一个非常有趣的问题。我不是要求解决这个问题,只是建议如何继续我的代码,我想知道派生类是否继承了基类的朋友。

这是问题所在:

  

类矩阵,类数组的朋友是类的基类   diagonal_matrix。派生类必须包含参数化   构造函数通过它来突出参数的传输   从基类,析构函数和方法到构造函数   检查矩阵是否为正方形和对角线(所有其他元素   而来自主对角线的那些等于零)。   说明虚函数的概念(纯粹的,如果它更自然   在实施中。)

这是我到目前为止所写的内容(今天关于如何继续)并不是很有创意:

#include <iostream>

using namespace std;

class arry
{
private:
    int *vec;
    int n;
public:
    int i,nrelem;
    arry(){};
    ~arry();
    void readArray(int);

};
arry::~arry()
{
    n=0;
    delete [] vec;
}
void arry::readArray(int elem)
 {
    n=elem;
    vec=new int[n];
   for(i=1;i<=elem;i++)
   {
       cout<<"vec["<<i<<"]=";
       cin>>vec[i];
   }
}

class matrix
{
public:
    friend class arry;
    matrix(int , int);
    ~matrix();
    };

int main()
{
    return 0;
} 

1 个答案:

答案 0 :(得分:1)

  class array的朋友是类diagonal_matrix

的基类

班级array没有朋友。这个班级array是班级matrix的朋友,因为它已经说明了<{1}}

matrix

你要求

  

关于如何继续我的代码的建议

从在课堂class matrix { public: friend class arry; // this is my friend matrix(int , int); ~matrix(); }; 宣布友谊开始。

  

我想知道派生类是否继承了朋友   基类

如果基类声明array为朋友,则它不是派生类的朋友,除非此派生类也将class A声明为朋友。

C ++标准版n3337 § 11.3 / 10好友

  

友谊既不是遗传也不是传递。