Где я сделал неправильный конструктор копирования и константную переменную в классе - PullRequest
0 голосов
/ 02 января 2019

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

 #include <iostream>
    #include <string.h>


     class Student{         //student class with constant variable
             private:


                  const int roll;
                  char *name;
                  float grade;

        public:
            Student(int num):roll(num),name("NULL"),grade(0.0){}; /* for const variable initializer.*/

            Student(const Student &obj )
            {
                cout<<"copy Constructor "<<endl;
                int stSize;
                stSize=strlen(obj.name);
                name= new char[stSize+1];
                strcpy(name,obj.name);
                grade=obj.grade;
            }
            void setStudent(char *nam,float grd){
                cout<<"Setting Student"<<endl;
                int stSize=strlen(nam);
                name=new char[stSize+1];
                strcpy(name,nam);
                grade=grd;  
            } 
            void getStudent()const{
                cout<<"Roll Number is :"<<roll<<endl;
                cout<<"Student Name is :"<<name<<endl;
                cout<<"Grade is :"<<grade<<endl;
            }

            ~Student(){
                delete[] name;
            }
    };
    int main()
    {
        Student a(10);

        a.setStudent("Adnan", 3.2);

        a.getStudent();

        Student b(12)=a; // this is where copy constructor should be shown. 

        Student c(11);



        c.getStudent();

        b.getStudent();
        return 0;

    }
...