1. 首页 > 科技

请问为什么b2的构造函数执行完,obj的num值是8?

请问为什么b2的构造函数执行完,obj的num值是8?

关于c++的一个问题,构造函数number(ElemType n=0):num(n){}中的num(n)是指什么意思

这个是基类构造函数有参数的情况 number是num类的派生类。num(n)的意思是调用基类的构造函数 并将前面的n的值作为参数传递给基类的构造函数

比如 定义 number *xn=new number(10);

此时会做两件事 首先将会调用num(10)构建基类 然后再执行number(10)自己的方法

类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj赋予初始值(内容自定).

我会采用深复制构造函数实现Copy对象,而不是重载=运算符。原因:因为使用了动态内存分配,当被Copy的对象使用完毕时析构函数将释放其所申请的内存空间,但Copy的对象还在使用中,此时释放内存将造成程序崩溃。 #includeusing namespace std;namespace ns{ class Person{ public: Person(){} Person(char *name, int age,char *sex){ this->name = new char[strlen(name) + 1]; strcpy(this->name, name); this->sex = new char[strlen(sex) + 1]; strcpy(this->sex, sex); this->age = age; } // 深复制构造函数 Person(const Person &obj){ this->name = new char[strlen(obj.name) + 1]; strcpy(this->name, obj.name); this->sex = new char[strlen(obj.sex) + 1]; strcpy(this->sex, obj.sex); this->age = obj.age; } ~Person(){ delete this->sex; delete this->name; } void print(){ cout << "name=" < this->name << "\tage=" < this->age << "\tsex=" < this->sex << endl; } private: char *name; int age; char *sex; };}int main(int argc, char *argv[]){ ns::Person person("James", 20, "男"); person.print(); ns::Person person2("Lisa", 22, "女"); person2.print(); ns::Person deepCopy=person2; deepCopy.print(); return 0;}

一道c++题

#include

using namespace std;

class MyClass

{

public:

MyClass(int n){number = n;}

//拷贝构造函数

MyClass(MyClass &other)

{

static count=0;//加入这两行可计算,结果是4

cout<<++count<

number=other.number;

}

~MyClass(){}

private:

int number;

};

MyClass fun(MyClass p)

{

MyClass temp(p); //这里1次

return temp;

}

int main()

{

MyClass obj1(10), obj2(0); //这里2次

MyClass obj3(obj1); //这里1次

obj2=fun(obj3);

return 0;

}

//结果是4

c++程序设计问题

编译运行通过,但是哥们,您的编程风格需要改善。程序易读性不好。这样不方便排错的。

#include

using namespace std;

class date

{

private:

int year;int month;int day;

public:

date(){}

date(int y,int m,int d)

{

year=y;

month=m;

day=d;

}

void set()

{cin>>year>>month>>day;

}

void display()

{

cout<

}

};

class person

{

private:

int num;

char sex[3];

date birthday;

char ID[18];

static int howmanys;//静态数据成员

public:

person(){}

person(int n,int y,int m,int d,char id[18],char s[3]):birthday(y,m,d)

{

num=n;

strcpy(sex,s);

strcpy(ID,id);

}

person(person &p)

{

num=p.num;

strcpy(sex,p.sex);

birthday=p.birthday;

strcpy(ID,p.ID);

}

void input()

{

cout<<"录入数据"<

cout<<"编号:";

cin>>num;

cout<<"性别:m or n\n";

cin>>sex;

sex[3]='\0';

cout<<"生日:";

birthday.set();

cout<<"身份证号:";

cin>>ID;

ID[18]='\0';

cout<

howmanys++;

}

void output()

{

cout<<"编号:"<

cout<<"性别:"<

cout<<"生日:";birthday.display();cout<

cout<<"身份证号:"<

}

static void gethowmany(){cout<<"这里共有"<

~person()

{

cout<

}

};

class teacher:public person

{private:

char principalship[11];

char department[21];

public:

void setprincipalship(){cout<<"职务:"<>principalship;principalship[11]='\0';}

void setdepartment(){cout<<"部门:"<>department;department[21]='\0';}

void outputprincipalship(){cout<<"职务:"<

void outputdepartment(){cout<<"部门:"<

teacher(){};

} ;

/*acher::teacher(int n,int y,int m,int d,char id[18],char s[3],char pr[11],char dep[21]):person(int n,int y,int m,int d,char id[18],char s[3])

{strcpy(principalship,pr);

strcpy(department,dep);

}*/

int person::howmanys=0;

int main()

{

teacher t[2];

for(int i=0;i<2;i++)

{

t[i].input();t[i].setprincipalship();t[i].setdepartment();

t[i].output();t[i].outputprincipalship();t[i].outputdepartment();

}//对象数组

person::gethowmany();//输出人员总数

return 0;

}