2012-01-24 4 views
-7
public: 
A();   
A(int B){*C = B - 1;}; 
private: 
int *C; 

Я считаю, что это правильно назвать два конструктора по умолчанию, но визуальная студия дает мне ошибки. Что не так с этим кодом?, определяющий встроенный конструктор по умолчанию C++

+0

Каковы ошибки? У вас не должно быть ';' после '}' функции. –

+0

Какая у вас ошибка? Вы должны быть более конкретными, если вы ожидаете от нас помощи. Плюс добавьте {} рядом с конструктором, который не принимает аргументов, так как у него нет определения. – fdh

+3

Вы, по крайней мере, не хватает 'class A {' и '};'. Пожалуйста, опубликуйте полную минимальную программу и сообщения об ошибках, которые она производит. http://sscce.org/. –

ответ

2

Один конструктор действительно является конструктором по умолчанию. Однако другой «конструктор» должен работать как деструктор, так как обычно он будет обращаться к недоступной памяти, которая, как правило, «сбой» программы. Вы должны посмотреть «список инициализаторов членов».

5

Это компилируется. Как он отличается от вашей программы?

class A { 
public: 
    A() {} // Define (not merely declare) default constructor 
    A(int B) { C = B - 1; } // Note: don't use uninitialized pointer 
private: 
    int C; // Note: not a pointer 
}; 
Смежные вопросы