2013-10-15 6 views
-1

Мне было интересно, правильно ли этот абстрактный тип данных создается.Объекты строятся правильно?

Моих Конструкторы:

IntSet();         
    IntSet(int a, int = -1, int = -1, int = -1, int = -1);  

IntSets создается в основном:

IntSet A(); 
IntSet B; 

Прямо сейчас конструируют в конструкторе по 5 значений и B построен в пустом конструкторе. Правильно ли это, или должно быть построено А ​​в пустом конструкторе?

Спасибо!

+5

Я не верю ни слова о том, что вы говорите. 'A' - это функция, а не объект. Это не похоже на то, что вы приложили все усилия для проверки своей гипотезы (например, распечатываете сообщение в каждом конструкторе или получаете доступ к членам после этого). –

ответ

1
IntSet A(); 

Эта линия объявляет функцию, которая не принимает никаких параметров и возвращает IntSet типа. Он не определяет объект. Он также известен как most vexing parse.

IntSet B; 

Эта строка определяет объект B, вызвав конструктор по умолчанию (конструктор, который принимает параметр 0).

1

Прямо сейчас, B по умолчанию сконструирован.

А, однако, не является определением объекта. Это объявление функции с именем A, которая не принимает аргументов и возвращает IntSet. Googling для «самого досадного разбора» предоставит больше объяснений и обсуждений.

Смежные вопросы