Конструктор Struct в C ++? - PullRequest
318 голосов
/ 14 июля 2009

Может ли struct иметь конструктор в C ++?

Я пытался решить эту проблему, но не получил синтаксис.

Ответы [ 16 ]

9 голосов
/ 21 августа 2015

В c ++ struct и c ++ class имеют только одно отличие: по умолчанию члены структуры являются открытыми, а члены класса являются закрытыми.

/*Here, C++ program constructor in struct*/ 
#include <iostream>
using namespace std;

struct hello
    {
    public:     //by default also it is public
        hello();    
        ~hello();
    };

hello::hello()
    {
    cout<<"calling constructor...!"<<endl;
    }

hello::~hello()
    {
    cout<<"calling destructor...!"<<endl;
    }

int main()
{
hello obj;      //creating a hello obj, calling hello constructor and destructor 

return 0;
}
5 голосов
/ 16 мая 2017

Синтаксис такой же, как у класса в C ++. Если вы знаете о создании конструктора в c ++, то он такой же в структуре.

struct Date
{
int day;

Date(int d)
{
    day = d;
}
void printDay()
{
    cout << "day " << day << endl;
}

};

Struct может иметь все как класс в c ++. Как упоминалось ранее, отличие состоит только в том, что по умолчанию член C ++ имеет частный доступ, но в структуре он является общедоступным. Но в соответствии с соображениями программирования Используйте ключевое слово struct для структур только для данных. Используйте ключевое слово class для объектов, которые имеют как данные, так и функции.

5 голосов
/ 22 октября 2013

В C ++ оба struct & class равны, кроме struct's спецификатор доступа к элементу по умолчанию равен public, а класс имеет private.

Причиной наличия struct в C ++ является то, что C ++ является надмножеством C и должно иметь обратную совместимость с legacy C types.

Например, если пользователь языка пытается включить заголовочный файл C legacy-c.h в свой код C ++, и он содержит struct Test {int x,y};. Члены struct Test должны быть доступны как C.

5 голосов
/ 10 октября 2011

Да, возможно иметь конструктор в структуре, вот один пример:

#include<iostream.h> 
struct a {
  int x;
  a(){x=100;}
};

int main() {
  struct a a1;
  getch();
}
3 голосов
/ 01 июля 2018

Еще один пример, но с использованием этого ключевого слова при установке значения в конструкторе:

#include <iostream>

using namespace std;

struct Node {
    int value;

    Node(int value) {
        this->value = value;
    }

    void print()
    {
        cout << this->value << endl;
    }
};

int main() {
    Node n = Node(10);
    n.print();

    return 0;
}

Скомпилировано с GCC 8.1.0.

1 голос
/ 14 июля 2009

В C ++ мы можем объявлять / определять структуру точно так же, как класс и иметь конструкторы / деструкторы для Структур и иметь определенные переменные / функции. Единственным отличием является область действия по умолчанию для определенных переменных / функций. Помимо вышеупомянутой разницы, в основном вы должны быть в состоянии имитировать функциональность класса, используя структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...