希望大家给我改改作业。急,在线等待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;
//这是多重继承时,二义性问题,
}