首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-11 
希望大家给我改改作业。急,在线等待ing。3-39 以下程序有什么错误?如有请予以修改。(1)使用静态成员函数。#inc

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

热点排行