读书人

希望大家给小弟我改改作业。待ing

发布时间: 2012-04-11 17:42:33 作者: rapoo

希望大家给我改改作业。急,在线等待ing。
3-39 以下程序有什么错误?如有请予以修改。
(1)使用静态成员函数。
#include<iostream.h>
#include<string.h>
class person{
public:
char m_strName[20];
long m_ID;
public:
person(char*strName, long ID){strcpy(m_strName,strName);m_ID=ID;}
static long GetID(){return m_ID;}
};
void main()
{
person person1("LiuJun",1101640524);
cout<<"ID="<<Person::GetID()<<'\n';
}
__________________________________________________________________________________
(2)派生类的构造函数调用基类的构造函数。
#include<iostream.h>
class Point
{
protected:
int x,y;
public:
Point(int a,int b){x=a;y=b;}
int getX(){return x;}
int gteY(){return y;}
};
class Circle:public Point
{
protected:
int radius;
public:
Circle(int a=0,int b=0,int r=0){radius=r;}
int getRadius(){return radius;}
};
void main()
{
Circle c(100,150,200);
cout<<"x="<<c.getX()<<",y="<<c.getY()<<",radius"<<c.getRadius()<<endl;
}
__________________________________________________________________________________
(3)关于常对象和常对象成员。
#include<iostream.h>
class Sample
{
private:
int n;
public:
Sample(int x){n=x;}
void SetValue(int x){n=x;}
void Display(){cout<<"n="<<n<<endl;}
};
void main()
{
const Sample a(100);
a.SetValue(0);
a.Display();
}
__________________________________________________________________________________
3-40 指出以下程序中的错误,并加以修改。
#include<iostream.h>
class A
{
protected:
int a;
public:
void SetData(int x){a=x;}
int GetData(){return a;}
};
class B
{
protected:
int b;
public:
void SetData(int y){b=y;}
int GetData(){return b;}
};
class C:public A,public B
{
public:
void SetData(int x,int y){a=x;b=y;}
};
void main()
{
C c;
c.SetData(30,70);
cout<<"a="<<c.GetData()<<",b="<<c.GetData()<<endl;
}
__________________________________________________________________________________

[解决办法]

C/C++ code
#include <iostream.h> #include <string.h> class person{ public:     char m_strName[20];     long m_ID; public:     person(char*strName, long ID){strcpy(m_strName,strName);m_ID=ID;}     long GetID()    {        return m_ID;    } }; void main() {      person person1("LiuJun",1101640524);      cout <<"ID=" <<person1.GetID()<<'\n'; /*这里你错了*/}
[解决办法]
C/C++ code
class Point { protected:     int x,y; public:     Point(int a,int b){x=a;y=b;}     int getX(){return x;}     int getY(){return y;} //拼写错误:getY();}; class Circle:public Point { protected:     int radius; public:     Circle(int a=0,int b=0,int r=0)        : Point(a, b)   //here    {        radius=r;    }     int getRadius(){return radius;} };
[解决办法]
赞一下lz,不过以后还是自己学才行

第1道:

C/C++ code
#include <iostream> #include <string> using namespace std;class person{ public:     char m_strName[20];     static long m_ID; public:     person(char*strName, long ID){strcpy(m_strName,strName);m_ID=ID;}     static long GetID(){return m_ID;} }; long person::m_ID;void main() {     person person1("LiuJun",1101640524);     cout << "ID= " << person::GetID() <<'\n'; } 


[解决办法]

C/C++ code
#include <iostream>#include <string>using namespace std;class person{public:    char m_strName[20];    long m_ID;public:    person(char*strName, long ID){strcpy(m_strName,strName);m_ID=ID;}    long GetID(){return m_ID;}};int main(){     person person1("LiuJun",1101640524);     cout <<"ID=" <<person1.GetID() <<'\n';     return 0;}
[解决办法]

//(1)使用静态成员函数。
#include <iostream.h>
#include <string.h>
class person{
public:
char m_strName[20];
long m_ID;
public:
person(char*strName, long ID){strcpy(m_strName,strName);m_ID=ID;}
static long GetID(person per){return per.m_ID;}
};
void main()
{
person person1("LiuJun",1101640524);
cout <<"ID=" <<person::GetID(person1) <<'\n';
}
//静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态数据成员必须通过参数传递方式
//得到对象名,然后通过对象名来访问.





//(2)派生类的构造函数调用基类的构造函数。

#include <iostream.h>
class Point
{
protected:
int x,y;
public:
Point(int a,int b){x=a;y=b;}
int getX(){return x;}
int gteY(){return y;}
};
class Circle:public Point
{
protected:
int radius;
public:
Circle(int a=0,int b=0,int r=0):Point(a,b){radius=r;}
//派生类的构造函数调用基类的构造函数。
int getRadius(){return radius;}
};
void main()
{
Circle c(100,150,200);
cout <<"x=" <<c.getX() <<",y=" <<c.gteY() <<",radius" <<c.getRadius() <<endl;
}


//(3)关于常对象和常对象成员。
#include <iostream.h>
class Sample
{
private:
mutable int n;
public:
Sample(int x){n=x;}
void SetValue(int x) const { n=x;}
void Display() const {cout <<"n=" <<n <<endl;}
};
void main()
{
const Sample a(100);
a.SetValue(0);
a.Display();
}
// 与基本数据类型的常量类似,常对象的值是不能被改变的..但可以用常成员函数修改



//3-40 指出以下程序中的错误,并加以修改。
#include <iostream.h>
class A
{
protected:
int a;
public:
void SetData(int x){a=x;}
int GetData(){return a;}
};
class B
{
protected:
int b;
public:
void SetData(int y){b=y;}
int GetData(){return b;}
};
class C:public A,public B
{
public:
void SetData(int x,int y){a=x;b=y;}
};
void main()
{
C c;
c.SetData(30,70);
// cout <<"a=" <<c.GetData() <<",b=" <<c.GetData() <<endl;
cout <<"a=" <<c.A::GetData() <<",b=" <<c.A::GetData() <<endl;
//这是多重继承时,二义性问题,
}

读书人网 >C++

热点推荐