#include<iostream>
#include<string>
using namespace std;
class mystring
{
public:
char *str;
public:
mystring(const char*s=" ")
:str(new char [strlen(s)+1])
{
strcpy(str,s);
}
mystring (const mystring &s)
:str(new char[strlen(s.str)+1])
{
strcpy(str,s.str);
}
mystring operator=(const mystring &s)
{
delete [] s.str;
if(this!=&s)
if(str!=NULL)
{
strcpy(str,s.str);
}
}
/*ostream& operator <<(ostream& output,mystring &s)
{
output<<s._s;
return output;
}*/
friend ostream & operator <<(ostream&,mystring &s);
//friend istream & operator >>(istream&,String &str);
~mystring()
{
if(str)
{
delete [] str;
str=NULL;
}
}
};
ostream& operator <<(ostream& output,mystring &s)
{
output<<s.str;
return output;
}
int main()
{
mystring obj="hello";
mystring p2;
mystring p3(obj);
p2=obj;
cout<<obj<<endl;
return 0;
}
在初始化类的成员的时候有两种方法,一种使我们比较常用的在函数体内进行赋值操作,另一种方式则是使用初始化列表。
在我这个小程序中采用了初始化列表的方式,对于我们常见的int、float类型两种方式差别不大,但是对于类进行初始化的时候,我们最好采用我这个程序中所选中的初始化列表的方式,在选用初始化列表的方式时会比那些在类内定义的减少了一次调用构造函数的过程。
const加与不加问题a.传递过来的参数在函数内不可以改变
b.参数指针所指内容为常量不可变
c.参数指针本身为常量不可变
d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:
在我的程序中加入了const主要原因是所列举的d选项,const的分类的用途还有很多种在文章结尾我将附上我所找到的const讲解博客
ps:由于刚刚开通博客,使用还不是很熟练,如果有任何问题欢迎大家联系我邮箱。
http://blog.csdn.net/Eric_Jo/article/details/4138548 const详细讲解
http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.html c++初始化列表详细讲解