HUUYUU
My Links
C++博客
首页
新随笔
联系
聚合
管理
Blog Stats
Posts - 34
Stories - 0
Comments - 8
Trackbacks - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年7月 (1)
2008年1月 (2)
2007年1月 (1)
2006年11月 (1)
2006年10月 (4)
2006年9月 (3)
2006年8月 (8)
2006年7月 (14)
搜索
最新评论
1. re: C++中const类型(二)----常指针和常引用
评论内容较长,点击标题查看
--啊
2. re: Freetype学习笔记
FreeType 的HINT是一种专利技术,需要经过APPLE的授权。
--mAGICfLYER
3. re: 面试必看(C/C++程序员应聘常见面试题深入剖析(2))
评论内容较长,点击标题查看
--ziyu
4. re: FreeType2研究
有个问题
如何裁剪ft2使得它仅支持一种字体,例如ttf.
如何使用它的缓冲子系统。
我的邮箱nicozsh@gmail.com
--暴走小鸡
5. re: FreeType2研究
呵呵
--秦歌
阅读排行榜
1. c++中的string用法(一) (8439)
2. c++中的string用法(三)(8393)
3. 面试必看(C/C++程序员应聘常见面试题深入剖析(2))(3859)
4. c++中的string用法(二)(3820)
5. C++中const类型(二)----常指针和常引用(3366)
评论排行榜
1. FreeType2研究 (5)
2. C++中const类型(二)----常指针和常引用(1)
3. Freetype学习笔记(1)
4. 面试必看(C/C++程序员应聘常见面试题深入剖析(2))(1)
5. TopWise C(0)
CString Class Programming!
1
class
String
2
{
3
public
:
4
String(
const
char
*
str
=
NULL);
//
普通构造函数
5
String(
const
String
&
other);
//
拷贝构造函数
6
~
String(
void
);
//
析构函数
7
String
&
operator
=
(
const
String
&
other);
//
赋值函数
8
const
char
*
operator
()(
void
)
const
;
9
private
:
10
char
*
m_data;
//
用于保存字符串
11
};
12
13
14
String::
~
String(
void
)
15
{
16
delete[] m_data;
17
}
18
19
String::String(
const
char
*
str)
20
{
21
if
(NULL
==
str)
22
{
23
//
不能让新对象的m_data为NULL
24
m_data
=
new
char
[
1
];
25
*
m_data
=
'
\0
'
;
26
}
27
else
28
{
29
int
length
=
strlen(str);
30
m_data
=
new
char
[length
+
1
];
31
strcpy(m_data, str);
32
}
33
}
34
35
String::String(
const
String
&
other)
/*
因为是新构造一个对象,所以不需要像operator=一样判断自赋值及释放原来的内存
*/
36
{
37
int
length
=
strlen(other.m_data);
38
m_data
=
new
char
[length
+
1
];
39
strcpy(m_data, other.m_data);
40
}
41
42
String
&
String::
operator
=
(
const
String
&
other)
43
{
44
//
判断自赋值
45
if
(
this
==
&
other)
46
return
*
this
;
47
//
释放原来的内存
48
delete [] m_data;
49
50
int
length
=
strlen(other.m_data);
/*
虽然m_data是private,但因为是在String的成员函数里,故没问题
*/
51
m_data
=
new
char
[length
+
1
];
52
strcpy(m_data, other.m_data);
53
54
return
*
this
;
55
56
}
57
58
const
char
*
String::
operator
()()
const
59
{
60
return
(
const
char
*
)m_data;
61
}
62
63
int
_tmain(
int
argc, _TCHAR
*
argv[])
64
{
65
String str(
"
hello
"
);
66
String str1
=
str;
/*
这儿调用的是copy constructor,非 operator=, why?
*/
67
printf(
"
%s\n
"
, str1);
68
69
const
char
*
str2
=
str();
70
printf(
"
%s\n
"
, str2);
71
72
return
0
;
73
}
posted on 2006-07-28 12:56
HUYU
阅读(214)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © HUYU