变量名称可以与C ++中的函数名称相同吗?

时间:2019-09-29 10:34:31

标签: c++ operator-overloading naming-conventions shadowing

在下面的代码中,lis是一个数组以及具有相同返回类型(int)的函数名称,我没有收到任何错误,有人可以解释后台发生了什么吗?为什么编译器没有显示错误?

int lis( int arr[], int n )  
{  

int lis[n]; 
lis[0] = 1;    
for (int i = 1; i < n; i++ )  
{ 
    lis[i] = 1; 
    for (int j = 0; j < i; j++ )   
        if ( arr[i] > arr[j] && lis[i] < lis[j] + 1)  
            lis[i] = lis[j] + 1;  
} 

1 个答案:

答案 0 :(得分:0)

它与变量名无关! 您无法动态定义函数中的列表。

您必须这样编写代码:

int lis(int arr[], int n)
{
    int *lis = new int[n];
    lis[0] = 1;
    for (int i = 1; i < n; i++)
    {
        lis[i] = 1;
        for (int j = 0; j < i; j++)
            if (arr[i] > arr[j] && lis[i] < lis[j] + 1)
                lis[i] = lis[j] + 1;
    }
    delete[] lis;

    return 0;
}