Разъяснение синтаксиса конструктора C

#c #syntax

#c #синтаксис

Вопрос:

Мне любопытно, можно ли предоставить какие-либо разъяснения по множеству синтаксиса конструктора, которые есть в C . Я видел конструкторы, объявленные внутри классов и вне классов. Я также видел инициализацию переменных с помощью более распространенных методов, таких как x = y или this-> x = y , но также и через списки инициализации, например Point(int i = 0):x(i) {} .

Мой вопрос заключается в том, существуют ли определенные ситуации, когда более целесообразно использовать один стиль конструктора над другим или объявлять конструктор внутри или вне класса. Является ли их какое-то общепринятое руководство по синтаксису для этого?

Комментарии:

1. Мой совет, всегда используйте синтаксис инициализации члена, т.е: Point(int i = 0):x(i) {}

2. Конструкторы всегда являются частью класса (поэтому они всегда находятся внутри класса). Теперь, если вы предоставите отдельное объявление в классе, затем реализуйте определение в другом файле, который просто зависит от того, что легче читать (простой встроенный в классе, сложный в отдельном файле).

Ответ №1:

Я считаю, что, как правило, хорошей идеей является наличие деструкторов конструкторов и прототипов других методов внутри самого класса, если они принадлежат к одному классу. Это более эффективно и более удобно для программистов. например: я бы сделал что-то вроде этого:

 class decl ....{
    private:
        members var.. methods' prototype..
    public:
        decl();  default cons prototype
        decl(type para....); parameterized cons prototype;
        ~decl();
        some methods' prototypes..
    };
 

Затем вы всегда можете продолжить и использовать их, принимая аргумент, чтобы присвоить значение мгновенной переменной
, такой как это:

 decl::decl(can user the same name or different ){

    if using the same name 
    this -> sameName = sameName;

    otherwise,
    instant data variable name = assign the value,
    }
 

Комментарии:

1. Я считаю себя экспертом в C , но… Я не совсем понимаю, что вы пытаетесь здесь сообщить