Премини към съдържанието

    Препоръчан отговор


    В какво се различават структурите от класовете в С++?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    преди 20 минути, Yehet написа:

     

    В какво се различават структурите от класовете в С++?

    Форумът не е Google.

    В структурите всичко по подразбиране е публично. В класовете - частно.

    • Харесва ми 2

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Структура и клас е едно и също и не е едно и също.

    Различават се само по правата за достъп до елементите им

    Класът по дефолт е прайвит, а структурата по дефолт е публик

    • Харесва ми 2

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Структурите съдържат само променливи, докато класовете съдържат променливи и функции. И двете се достъпват чрез обекти.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 1 час, frozener написа:

    Структурите съдържат само променливи, докато класовете съдържат променливи и функции. И двете се достъпват чрез обекти.

    Това пък как го реши. Ако обявиш експлицитно достъпа на всичките методи и членове, думичките class и struct са взаимно заменяеми. Което е и логично от гледна точка на ООП. Дали има методи или само данни, обектът си е обект.

     


    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 8 минути, flare написа:

    Това пък как го реши

    Чисто интуитивно, при преминаване от с на с++.

    Ако например си мислиш, че структурата е също както на с, и не четеш, за да не губиш време, а четеш само за класове, щото понятието клас не съществува в с и ти се струва нещо ново и в тази връзка много по заслужаващо си да се прочете.

     

    • Харесва ми 1

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 9 минути, Реджеп Иведик написа:

    Чисто интуитивно, при преминаване от с на с++.

    Ако например си мислиш, че структурата е също както на с, и не четеш, за да не губиш време, а четеш само за класове, щото понятието клас не съществува в с и ти се струва нещо ново и в тази връзка много по заслужаващо си да се прочете.

    Значи всеки който си мисли че разликата между процедурно и обектно програмиране е просто надграждане, леко се е объркал. Тука да спомена Маршал Клайн дето казваше - знаете C перфектно? Сори ама, тва не ви прави по-малко новак в C++.

     

    П.П. А сега видях че съм проспал от горния цитат " И двете се достъпват чрез обекти. " иначе още горе щях да подпитам @frozener да каже и това пък какво ще да значи. Достъпваш клас чрез обект? Достъпваш нещо си (вече инстанцирано) чрез име, препратка, указател...

    Редактирано от flare (преглед на промените)
    • Харесва ми 1

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 10 часа, flare написа:

    Значи всеки който си мисли че разликата между процедурно и обектно програмиране е просто надграждане, леко се е объркал. Тука да спомена Маршал Клайн дето казваше - знаете C перфектно? Сори ама, тва не ви прави по-малко новак в C++.

     

    П.П. А сега видях че съм проспал от горния цитат " И двете се достъпват чрез обекти. " иначе още горе щях да подпитам @frozener да каже и това пък какво ще да значи. Достъпваш клас чрез обект? Достъпваш нещо си (вече инстанцирано) чрез име, препратка, указател...

    Исках да кажа, че всеки обект от тип конкретен клас може да достъпва променливите и функциите в класа към, който принадлежи. Същото е и при структурите, но вътре не може да има функции поне не са ни казвали, че може. Поне така аз го разбирам.

    Редактирано от frozener (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    преди 13 часа, frozener написа:

    Исках да кажа, че всеки обект от тип конкретен клас може да достъпва променливите и функциите в класа към, който принадлежи. Същото е и при структурите, но вътре не може да има функции поне не са ни казвали, че може. Поне така аз го разбирам.

    Тоест обектът достъпва данни и методи чрез интерфейса, описан в класа нали? Не обратното.

    А това за структурите не е вярно. Направи това дето посочих горе и ще видиш - в един код обяви изрично достъпа на всички данни и методи и размени struct със class. Не само че ще се компилира, ами и компилациятата на двете версии би трябвало да доведе до един и същи резултат - дори бинарно. В gcc така става.

    Редактирано от flare (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    • Подобни теми

      • от Hadjimehmed Shener
        Здравейте, трябва да представя курсова работа тази седмица . Направих си програмата, обаче имам едно условие още , което гласи "използвате запитване за името на играча и съхранявате резултатите в текстов файл" . Моля помогнете , ако е нужно ще ви пратя и целия код
      • от Магдаленаг
        Здравейте ) който разбира от програмиране на C++ да я драсне набързо задачката/ако може с #include<stdio.h>/ Благодаря предварително))
        Да се състави програма за състезание по ориентиране на ученици, която поддържа следната информация за участниците:
        име, ЕГН, клас, училище, брой точки;
        и извършва следните операции:
        създава нов празен файл; добавя нова информация за участници и изтрива ненужната за отказали се; извежда имената на всички ученици от дадено училище; извежда името и училището за всички момичета, които имат повече от 20 точки.
      • от Maria11
        Здравейте, имам следната задача:
        1. Да се състави абстрактен шаблонен клас Comparable сравнител за по-малко;
        Виртуална предикатна функция compareTo(T obj).
        2. Да се състави шаблонен клас CTableColumn - описател на колона на таблица, наследник на два конкретни шаблона на Comparable:
        CTableColumn и int.
        Частни членове:
        string m_strRowName - име на ред
        string m_strColumnName - име на колона
        int m_contents - съдържание
        Конструктори:
        Подразбиращ се, Експлицитен, Копиращ
        Публични членове:
        accessors: getRowNameq getColumnName, getValue
        mutator: setValue
        преобразувател на елементите в стринг: string toString() ////////
        предикатна за празно име на колоната или ред isEmpty() ////////
        виртуалните функции compareTo(CTableColumn toObj) compareTo(int Obj) ////////
        Много се затруднявам на шаблонен клас. Имам нужда от помощ за него, не знам нищо за него.
        #include <iostream> #include <string> #include <ostream> #include <fstream> using namespace std; templete <class T> ///////1. { public: virtual void compareTo(T obj) { bool operator < (const Comparable& A)const { return obj < A.obj; } } }; templete <class T> //////2. class CTableColumn { private: string m_strRowName; string m_strColumnName; int m_contents; CTableColumn(){} CTableColumn(string red, sting kolona, int sudurjanie) { m_strRowName = red; m_strColumnName = kolona; m_contents = sudurjanie; } CTableColumn(const CTableColumn& A) { m_strRowName = A.m_strRowName; m_strColumnName = A.m_strColumnName; m_contents = A.m_contents; } public: string getRowName() const {return m_strRowName;} string m_strColumnName() const {rturn m_strColumnName;} int getValue() const {return m_contents;} void setValue(int s) {m_contents = s;} //........... //........... //........... }; Ако може помогнете ми за string toString(), isEmpty() и виртуалните функции compareTo(CTableColumn toObj) compareTo(int Obj).
         
      • от blodwenn
        Цяла седмица се опитвам да си завърша курсовата задача по програмиране. Последния срок е утре до 17:00 а съм до никъде. Надробих някакви простотии но не вярвам да ми донесат каквото и да е... Бих бил много благодарен на всякаква помощ.

        Ето го и условието:
        Съставете програма с функция main() и избор чрез меню на функции за:
        - въвеждане от клавиатура данните на К студента (К<=25) от група: фак.номер, оценки по 4 дисциплини от зимен семестър, възраст и съхраняването им в масив GR(25,6) като (GR(I,0) - за фак. номер, (GR(I,1) до (GR(I,4) - за оценка, (GR(I,5) за възраст.
        - изчисляване и извеждане на среден успех по избрана дисциплина; 
        - изчисляване и извеждане на среден успех на студент по зададен фак. номер;
        - намиране и извеждане на броя на студентите над зададена възраст
        - извеждане на екран съдържанието на масива със съответни текст и формати. 

        Когато видите състоянието на кода ми ще се разберете защо публикувам тема.Ако не друго - поне ще се посмеете 
        Ето го и него:
        #include <iostream> #include <string> using namespace std; int input(int x[]); int add(int a); void studentID(int a); int main() { int ch, GR[25][6], n; do { cout << "\Show student data: \n"; cout << "\Show GPA for subject : \n"; cout << "\Show GPA for a FN: \n"; cout << "\Show amount of students over the age of 18: \n"; cout << "\Exit"; do { cout << "\n\nChoice: \n"; cin >> ch; } } int input(int x[]) { int i, n = 0; do { cout << "\n Input size: "; cin >> n; } while (1 > n || n > 25); for (int i = 0; i < n; i++) { cout << "\n Enter element [" << i + 1 << "] = "; cin >> x[i]; } return n; } int add(int a) { char iz; while (1) { cout << "Insert ID:"; cin >> rab[a].id; cout << "Insert grade1:"; cin >> rab[a].g1; cout << "Insert grade2:"; cin >> rab[a].gr2; cout << "Insert grade3:"; cin >> rab[a].gr3; cout << "Insert grade4:"; cin >> rab[a].gr4; cout << "Insert age:"; cin >> rab[a].age; a++; cout << endl << "Do you want to add a new student?" << endl << "type (y) for yes and (n) for no:"; cin >> iz; if (iz == 'n') { return a; break; } return 0; } } void studentID(int a) { char ID[5]; // cout<<a; cout << "Insert ID:"; cin >> studentID; for (int i = 0; i<a; i++) if (!strcmp(studentID, rab[i].studentID)) { cout << "Name:" << rab[i].name << endl << "ID:" << rab[i].id << endl << "Age:" << rab[i].god << endl; } return; } Намерих същата задача във форума ви но е решена без функции а по следния начин:
        #include <iostream> using namespace std; int main() { int K=0; int choice=0; cout << "Vivedete broq na studentite(1-25): "; cin >> K; double GR[K][6]; for(int i=0; i<K; ++i) for(int j=0; j<6; ++j) { cout << "GR("<<i<<","<<j<<") = "; cin >> GR[i][j]; } do { cout << "1. Izchislqvane i izvejdane na sredniq uspeh po izbrana disiplina" << endl; cout << "2. Izchislqvane i izvejdane na sredniq uspeh na student po dazaden vakulteten nomer" << endl; cout << "3. Namirane i izvejdane na broq na studentite nad zadadena vizrast." << endl; cout << "4. Izvejdane na ekrana sidirjanieto na masiwa sys siotvetniq tekst i formati." << endl; cout << "Molq, izberete obciq(1-4): "; cin >> choice; }while(choice>4 || choice<1); if(choice == 1) { int disiplina=0; double srUspeh=0; cout << "Izberete disiplina(1-4): "; cin >> disiplina; if(disiplina > 5 || disiplina < 1) cout << "Greshen vhod!" << endl; for(int i=0; i<K; ++i) srUspeh+=GR[i][disiplina]; cout << "Sredniq uspeh po disiplina " << disiplina << " e : " << srUspeh/K << endl; } else if(choice == 2) { int FKNomer=0; bool isFound=false; double srUspeh=0; cout << "FK Nomer: "; cin >> FKNomer; for(int i=0; i<K; ++i) { if(GR[i][0] == FKNomer) { for(int j=1; j<5; ++j) srUspeh += GR[i][j]; isFound = true; break; } } if(isFound == false) cout << "Ne e nameren student s takiv FK nomer!" << endl; else if(isFound) cout << "Sredniq uspeh na student s FK=" << FKNomer << " e : " << srUspeh/4 << endl; } else if(choice == 3) { int vizrast, br=0; cout << "Vivedete vizrast: "; cin >> vizrast; for(int i=0; i<K; ++i) { if(GR[i][5] > vizrast) { br++; } } cout << "Broq na studentite, koito sa po-golemi ot " <<vizrast << " godini: " << br << endl; } else if(choice == 4) { for(int i=0; i<K; ++i) { cout << "Student " << i+1 << endl; cout << "Fak. Nomer: " << GR[i][0] << endl; cout << "Otsenki: " << GR[i][1] << " " << GR[i][2] <<" "<< GR[i][3] <<" "<<GR[i][4] << endl; cout << "Vizrast: " << GR[i][5] << endl; } } return 0; } Не мисля че това е целта на задачата, така че едва ли ще бъде приета за вярна. 
      • от Yehet
        Здравейте! Каква е разликата между конструктора за присвояване и конструктора за копиране?
    • Разглеждащи в момента   0 потребители

      Няма регистрирани потребители разглеждащи тази страница.

    • Дарение

    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.