Пожалуйста, помогите мне прояснить понятия со следующими проблемами: (выполнено и протестировано на linux, gcc)
Задача 1:
В следующем простом примере, что именно означает A a ()??
Я обнаружил, что это не определение конструктора по умолчанию, но a () - это функция с типом возврата, равным A.
Если это правильно, то почему этот код выполняетне дает мне никакой ошибки компоновщика или ошибки времени выполнения . Этот код работает и связывается гладко, как если бы он знал определение функции a ().
class A
{
public:
void print()
{
printf("In class A\n");
}
};
int
main()
{
A a();
//a.fun(); //throws error "request for member ‘fun’ in ‘a’, which is of type ‘A()’"
}
задача 2.
В следующем коде определение массива b выдает ошибку.Я не могу найти точную причину такого поведения.
int a[]={3,4,21,5,7,86};
int b[a[3]]; //this throws error why???
int
main() { ... }