C++ 程序设计解决办法
C++ 程序设计
#ifndef STRING_H
#define STRING_H
#include <string.h>
#include <iostream.h>
class String
{
friend ostream & operator<<(ostream &,const String &);
public:
String(const char *str)
:length(strlen(str))
{
sptr=new char [length];
strcpy(sptr,str);
}
private:
int length;
char *sptr;
};
ostream & operator<<(ostream & output,const String & string)
{
output<<string.sptr;
return output;
}
#endif
#ifndef TYPE1_H
#define TYPE1_H
#include "String.h"
class Type1Employee
{
public:
Type1Employee(const String & first,const String & last,const String & number)
{
firstName=first;
lastName=last;
securityNumber=number;
}
protected:
String firstName;
String lastName;
String securityNumber;
};
#endif
#include <iostream.h>
#include "String.h"
#include "Type1Employee.h"
int main()
{
String str1("I am a","Re","22-33-55");
cout<<str1<<endl;
return 0;
}
为什么用主函数调试确出现 没有默认的构造函数??
------解决方案--------------------
>没有默认的构造函数??
如果你宣告了自己的constructor,那就不会有default constructor
你可以自己测试
#ifndef STRING_H
#define STRING_H
#include <string.h>
#include <iostream.h>
class String
{
friend ostream & operator<<(ostream &,const String &);
public:
String(const char *str)
:length(strlen(str))
{
sptr=new char [length];
strcpy(sptr,str);
}
private:
int length;
char *sptr;
};
ostream & operator<<(ostream & output,const String & string)
{
output<<string.sptr;
return output;
}
#endif
#ifndef TYPE1_H
#define TYPE1_H
#include "String.h"
class Type1Employee
{
public:
Type1Employee(const String & first,const String & last,const String & number)
{
firstName=first;
lastName=last;
securityNumber=number;
}
protected:
String firstName;
String lastName;
String securityNumber;
};
#endif
#include <iostream.h>
#include "String.h"
#include "Type1Employee.h"
int main()
{
String str1("I am a","Re","22-33-55");
cout<<str1<<endl;
return 0;
}
为什么用主函数调试确出现 没有默认的构造函数??
------解决方案--------------------
>没有默认的构造函数??
如果你宣告了自己的constructor,那就不会有default constructor
你可以自己测试
- C/C++ code
class ccc { public: ccc(int) {} }; int main() { ccc A; }
------解决方案--------------------
String(const char *str)
:length(strlen(str))
{
sptr=new char [length];
strcpy(sptr,str);
}
这不是已经初始化了吗?