C++中operator thread和string的区别&() 与operator thread和string的区别()的区别是什么

String * operator +(const String &s1, const String &s2)
[问题点数:20分,结帖人zjj2282680]
本版专家分:25
结帖率 100%
CSDN今日推荐
本版专家分:12854
2010年3月 C/C++大版内专家分月排行榜第一2006年1月 Java大版内专家分月排行榜第一
2006年4月 Java大版内专家分月排行榜第三
本版专家分:3611
本版专家分:4257
本版专家分:2047
本版专家分:288
本版专家分:25
本版专家分:25
本版专家分:25
本版专家分:24
本版专家分:4257
本版专家分:25
本版专家分:25
本版专家分:288
本版专家分:288
本版专家分:1363
本版专家分:1363
本版专家分:25
匿名用户不能发表回复!
其他相关推荐C++中的operator和&operat区别例程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C++中的operator和&operat区别例程
&&C++中的operator和&operat区别例程
你可能喜欢string类使用起来比较方便,在本课程的开始我们就学习了string类。之所以那么早就学习string,就是希望大家能够用string代替c风格的字符串。目前为止,我们学习了如何定义类,以及如何为类定义运算符重载函数。今天我们就来定义一个类似于string功能的自己的String类。
1.构造函数
String(const char *s); //用c字符串s初始化
String(int n,char c); //用n个字符c初始化
2.拷贝和赋值
String& String(String& str);
const String& operator=(String& str);
3.析构函数
~String();
4.下标访问
char &operator[](int n);
char &at(int n)
5.String类提供的方法
int size() //返回当前字符串的大小,string内部不会在我们每一次的字符串连接的时候都会分配空间,它会多分配一些内存,下次连接时的字符串小于剩下的空间它就不用再为这个字符串分配另外的空间了。它分配的所有空间就是size,而字符串的实际长度length
int length() //返回当前字符串的长度
bool empty() //当前字符串是否为空
6.重载流插入和提取运算符
istream& operator&&(istream& input, String& str);
ostream& operator&&(ostream& output, String& str);
7.连接两个字符串
String &operator+=(String &s);
8.字符串比较
bool operator==(const String &s1,const String &s2)
int compare(const string &s)//比较当前字符串和s的大小
  在我们这里实现的string类是比较简单的,C++标准模板库里面的string类的方法是非常非常多的,而且是非常非常复杂的。这里我们仅仅是为了给大家演示一下string类内部大概的实现方法,以及复习大家前段事件所学习的内容。
原文链接:
C++ 定义string类型变量
int main()
string s1;//s1为空串
/* s1 = &aaa&;
string s2...
C++(定义和初始化string对象)
#include &stdafx.h&
int _tmain(int argc, _TCHAR* argv[])
【C++】 用string类定义字符串数组
int main()
string ...
C++ string详解
from unknow source : 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成...
C++运行时通过字符串实例化类对象
有时候我们希望通过一个字符串创建类,可以通过if..else...来实现
string str = &some_class_name&;
view plain...
C++字符串常量定义方式选择
#define HELLO &Hello World&
const char *HELLO2 = &Howdy&;
What do you prefer? If possible...
string 数组怎么定义
string数组的定义有三种:
String arr[] = new String[10]; //创建一个长度为10的String 类型数组。
String arr[] = {&张三...
C++类的定义与对象创建
C++类内成员变量默认private,外部对象不能直接访问
/*在stdlib.h头文件中定义了system()函数*/...
c++中string的用法
#include&string&
#include&algorithm&
//string的赋值
c/c++字符串定义及使用的对比
c/c++中使用字符串的频率还是比较高的,下面就字符串的不同定义及其使用方法做一些对比
字符串一般有以下三种定义方法:
1、char *p=&hello&;
2、char str[6]=&...
没有更多推荐了,1.看到WTL的CWindow源码时会发现这样的operator重载,仔细看会发现它并不是重载()操作符.
operator HWND() const throw()
return m_hW
如果重载()操作符,应该是,返回值HWND应该在operator的左边,而且应该有两个括号()
HWND operator ()() const throw()
return m_hW
这种类型的操作符重载应该是type conversion operator(类型转换操作符),它可以把类类型转换为指定的类型,如果定义了这种转换,好处就是该类对象赋值给 method(HWND),参数是HWND类型的方法时会自动转换为HWND类型,或者需要打印这个类信息时。operator std::string().
operator Type()
而重载()操作符确实是需要调用()才会调用,比如object([param])。
#include &iostream&
#include &string&
#include &string.h&
#include &stdlib.h&
#include &stdio.h&
class Total
Total(float sum,float discount)
discount_ =
~Total(){}
operator float()
return sum_* discount_;
operator std::string()
char str[128];
sprintf(str,"%f",sum_* discount_);
return std::string(str);
float operator()()
return sum_* discount_;
float sum_;
float discount_;
int main(int argc, char const *argv[])
Total to(89,0.8);
cout && to &&
cout && to() &&
cout && (std::string)to &&
//cout && to(0.9) &&
C++函数对象operator()
函数对象:定义了调用操作符()的类对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。举个最简单的例子:
C++中括号()操作符的重载举例及解析
C++项目中,经常会遇到使用重载()操作符的地方,请看下面一个例子:
[cpp] view
C++ operator关键字(重载操作符)
重载运算符
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。...
operator++()和operator++(int)的区别
转至:http://dev.yesky.com/228/2578228.shtml
很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语...
C++之operator关键字(重载操作符) 使用总结
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,
一、为什么使用操作符重载
简单的说我们基本数据比如int float 都可以比较大小 有&、、
二、实现重载的操作...
今天看见一段code。 发现一个很好玩的用法. 可能我见识少吧。记录一下:
class Loop
。。。。。。
inline operator e...
operator 只要是运算符都能重载
operator 关键字的主要作用是用来重载运算符的,还可以用于类或结构中类型的自定义转换。
下面看个例子
[csharp] view...
c#问题 谁能解释下public static implicit &em&operator&/em& &em&float&/em& 立即下载
上传者: gxl2001 时间:
综合评分: 0 积分/C币:0
实验五、运算符重载 复数...
c#问题 谁能解释下public static implicit &em&operator&/em& &em&float(&/em&currency value)中的&em&operator&/em&是什么意思.txt 综合评分:0 收藏评论举报 所需: 0积分/C币 开通VIP 立即...
函数、符号及特殊字符
latex数学符号表(2)& style=&border: max-...
没有更多推荐了,在 c++ primer 5 中在说到string的章节里面有这样一句话:
string s5 = "hiya";
// copy initialization
也就是说,这里说上面这句是拷贝初始化,也就是调用拷贝构造函数。而下面这句:
string s6("hiya"); // direct initialization
却又是直接初始化,然后我就再想,在 c++ 的初始化里面上面这两种不是等效的么?另外我也很好奇在string的实现里面&string s5 = "hiya"; 如果真的是拷贝初始化的话有没有中间生成一个临时变量(虽然不太可能,这样写效率显然很低)。于是去看 SGI STL的源码,找到关于 operator = 的部分是这样的:
basic_string& operator=(const _CharT* __s)
// wc: = char*
{ return assign(__s, __s + _Traits::length(__s)); }
显然这里可以说明没有中间变量的产生。
后面我是用这两种方式在 vs 下面单步调试的:
int main(int argc, char* argv[])
int a = 0;
string str = "wc";
string str2("wcww");
然后发现这两种初始化语句进入的构造函数是相同的,都是下面这个:
basic_string(const _Elem *_Ptr)
: _Mybase()
// construct from [_Ptr, &null&)
assign(_Ptr);
而这个并不是什么拷贝构造函数,就是一般的构造函数而已。所以最上面两句的构造都属于直接构造而没有拷贝构造。
阅读(...) 评论()

我要回帖

更多关于 string和char的区别 的文章

 

随机推荐