摘要:
/*//5 包含对系统的消耗//由于book类的数据成员中包含量了3个String类的对像,因此在创建一个book类对像时也就不可避免的创建3个String类的对像,本节我们通过在String类和book类的构造和析构函数中添车输出语句演示这种消耗#include "String.h"class Book{public: Book(); ~Book(){ cout<<"Book类的析构函数执行...."<<endl;} Book(char*, char*, char*, float); //不能修改返回值,在函数内也不能修改,也不 阅读全文
posted @ 2012-09-24 23:59
简单--生活
阅读(203)
评论(0)
推荐(0)
摘要:
// 6按别名传递book对像//由于在创建一个book类对像时会创建3个String类对像,因此,假如我们按值传递一个book类对像给某个函数,那么对系统的消耗是相当可观的,接下来的例子将演示按值与按别名传递book类对像的不同#include "String.h"class Book{public: Book(); ~Book(){ cout<<"Book类的析构函数执行...."<<endl;} Book(char*, char*, char*, float); //不能修改返回值,在函数内也不能修改,也不想调用复制构造函数 阅读全文
posted @ 2012-09-24 23:59
简单--生活
阅读(183)
评论(0)
推荐(0)
摘要:
// 4 为图书重载GetAuthor函数//本节我们再创建一本图书,这本书是由两个合写的,为了记录这两个人的姓名,我们需要定义一个字符串#include "String.h"class Book{public: Book(); Book(char*, char*, char*, float); //不能修改返回值,在函数内也不能修改,也不想调用复制构造函数,按地址传递 const String& GetTitle()const{ return title; } const String& GetAuthor()const{ return author; } 阅读全文
posted @ 2012-09-24 23:40
简单--生活
阅读(357)
评论(0)
推荐(0)
摘要:
#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 ~String(){ delete []str; len=0; //cout<<"析构函数执行"<<endl; } String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ return str;} //读取字符串 / 阅读全文
posted @ 2012-09-24 23:39
简单--生活
阅读(201)
评论(0)
推荐(0)
摘要:
// 38总结#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 ~String(){ delete []str; len=0; cout<<"析构函数执行"<<endl; } String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ return str;} //读取 阅读全文
posted @ 2012-09-24 22:37
简单--生活
阅读(250)
评论(0)
推荐(0)
摘要:
// 35用重载比较运算符实现字符串的比较/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ return str;} //读取字符串 //重载输出函数 friend ostream&operator<<(ostream & 阅读全文
posted @ 2012-09-24 22:36
简单--生活
阅读(1572)
评论(0)
推荐(0)
摘要:
// 36为string类添加字符串的相加功能/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 ~String(){ delete []str; len=0; cout<<"析构函数执行"<<endl; } String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ 阅读全文
posted @ 2012-09-24 22:36
简单--生活
阅读(1180)
评论(0)
推荐(0)
摘要:
// 33用重载输出运算符函数实现字符串的输出/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ return str;} //读取字符串 //重载输出函数 friend ostream&operator<<(ostream &am 阅读全文
posted @ 2012-09-24 22:35
简单--生活
阅读(702)
评论(0)
推荐(0)
摘要:
// 34用重载输入运算符函数实现字符串的输入/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 //const char *getstr()const{ return str;} //读取字符串 //重载输出函数 friend ostream&operator<<(ostream &am 阅读全文
posted @ 2012-09-24 22:35
简单--生活
阅读(771)
评论(0)
推荐(0)
摘要:
// 30限制数组越界// 该函数有一个参数即数组的下载length, 下标值length会传递到函数体中进行判断,假如下标超过数组的长度,那么返回数组长度-1,也就是最后一个可见字符,假如不超过数组长度,那么返回该下标的数组元素/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 const char *ge 阅读全文
posted @ 2012-09-24 22:32
简单--生活
阅读(247)
评论(0)
推荐(0)
摘要:
//31用复制构造函数实现字符串的初始化/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 const char *getstr()const{ return str;} //读取字符串 //这里是可以修改的 char &operator[](unsigned short int length); c 阅读全文
posted @ 2012-09-24 22:32
简单--生活
阅读(1294)
评论(0)
推荐(0)
摘要:
// 32用重载赋值运算符函数实现字符串赋值功能/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 const char *getstr()const{ return str;} //读取字符串 //这里是可以修改的 char &operator[](unsigned short int length 阅读全文
posted @ 2012-09-24 22:32
简单--生活
阅读(1030)
评论(0)
推荐(0)
摘要:
// 27 编辑写精减版的string类/*实现功能如下: 1: 可计算字符串的长度,类似于string类的size或者length 2: 可对字符串进行赋值,如string str="hell word"; 3: 可将char型字符串直接赋值给string型字符串,如 string str="hello word"; char ch[10] = "not at all"; 4: 可象对像那样将字符串进行初始化,如:string str("Month"); 5: 可将两个字符相加,然后将合并后的字符串赋给另一个字符 阅读全文
posted @ 2012-09-24 22:31
简单--生活
阅读(171)
评论(0)
推荐(0)
摘要:
// 28创建string类/*#include <iostream>using namespace std;class String{public: String(); int getlen(){ return len;}private: int len; char *str;};//创建一个空的str变量String::String(){ len = 0; str = new char[1]; str[0] = '\0';};int main(){ String str; cout<<str.getlen()<<endl; return 阅读全文
posted @ 2012-09-24 22:31
简单--生活
阅读(148)
评论(0)
推荐(0)
摘要:
//29创建可自动调节大小的string类字符串对象//上一节实现了一个空字符串的创建,本节将在这个基础上创建一个有字符的字符串,并且该字符串可以根据字符的长度自动调节数组的大小/*#include <iostream>using namespace std;class String{public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { return len;} //读取长度 const char *getstr()const{ return str;} 阅读全文
posted @ 2012-09-24 22:31
简单--生活
阅读(217)
评论(0)
推荐(1)
摘要:
//26 前置跟后置自加/*#include <iostream>using namespace std;class A{public: A(int n){ rx=n;} friend ostream&operator<<(ostream&s, const A&c){ s<<c.rx<<endl; return s; } friend istream&operator>>(istream&s, A&c) { s>>c.rx; return s; } //前置运算符 int o 阅读全文
posted @ 2012-09-24 22:30
简单--生活
阅读(189)
评论(0)
推荐(0)
摘要:
// 25重载自加运算符的执行次序/*#include <iostream>using namespace std;class A{public: A(int n){ rx=n;} friend ostream&operator<<(ostream&s, const A&c){ s<<c.rx<<endl; return s; } //前置运算符 int operator++(){ cout<<"++i"<<endl; rx++; return rx; } //后置自加 int 阅读全文
posted @ 2012-09-24 22:29
简单--生活
阅读(260)
评论(0)
推荐(0)
摘要:
// 23重载输出运算符/*#include <iostream>using namespace std;class A{public: A(int x, int y){ rx = x; ry = y; }//private: int rx; int ry;};ostream&operator<<(ostream&s, const A&c){ s<<c.rx<<" "; s<<c.ry<<endl; return s;};int main(){ A a(3,4), b(5,6); 阅读全文
posted @ 2012-09-24 22:27
简单--生活
阅读(199)
评论(0)
推荐(0)
摘要:
// 24友无的方式重载输出运算符//本节的开头首先讲一下运算符的知道,<<是按位左移运算符,但是当该符号与流对象,比如说cout连用地就变成了输出运算符,或者叫提取运算符//注意它们的区别,接位左移动算符是用来执行位移操作的,比如说//int num=1;//num<<1;//按位左移运算符(<<)将运算符左边的运算对像num向左移动运算符右侧指定的位数1,然后在低部补0//了解了它们的区另以后,接下来有个问题,按位左移运算符和输出运算符这两个符号是一样的,编辑器是如何来区分它们的,为了解释这个问题,我们需要返回到上一节的代码中/*#include < 阅读全文
posted @ 2012-09-24 22:27
简单--生活
阅读(450)
评论(0)
推荐(0)
摘要:
// 21string数组与函数/*#include <iostream>#include <string>//假如要传递多个字符串,那么可以声明一个string对像数组,然后将数组传递到函数中using namespace std;void show(const string str[], int l);int main(){ const int l = 5; string st[l]; for(int i=0; i<l; i++) { cout<<i<<"请输入:"<<endl; cin>>s 阅读全文
posted @ 2012-09-24 22:26
简单--生活
阅读(230)
评论(0)
推荐(0)
摘要:
//22流的简介/*"流"从字面上理解是流动的意思,书面上的解释是物质从一处往另一处流动的过程C++的输入和输出遵循了这一概念,C++的输出是将一个对像的状态下换成一个字符序列,车出到指定的地方cout<<"hello world";双引号中的hello word是所有输出的对像,C++的重载按位左移运算符<<将对像转换成一个向左移动的字符序列,cout则表示将其输出在计算机外部设备管理中,如显示器的屏幕上C++的重载按位右移运算符>>表示从指定地方按照向右移动的顺序接受字符序列,然后将其转换为对像的数据成员的格式,c 阅读全文
posted @ 2012-09-24 22:26
简单--生活
阅读(269)
评论(0)
推荐(0)
摘要:
// 20结构体与string//string是一个类,在C++中类与结构体区另不大,因此string类与结构体的区别也不大,既然string类结构体的区别不大,那么我们可以把一个结构传递给函数并返回结构体,我们自然也可以把string对像传递给函数或者返回一个string对像/*#include <iostream>#include <string>using namespace std;const string& show(const string &p){ cout<<p<<endl; return p;}int main( 阅读全文
posted @ 2012-09-24 22:25
简单--生活
阅读(269)
评论(0)
推荐(0)
摘要:
//19 结构体与函数//由于结构可以看作一个数据类型并且可以赋值,因为我们可以将结构传递到函数中,或者在函数中返回一个结构//按值返回我们知道需要复制返回的结构,结构体可以容纳不同的类型的变量,相应产生的问题是复制数据也很多,假如我们不想复制数据,那么就要按地址返回/*#include <iostream>using namespace std;struct time{ int hour; int minute;};const int perhour = 60; //定义分钟数//time sum(time t1, time t2);time *sum(time t1, time 阅读全文
posted @ 2012-09-24 22:24
简单--生活
阅读(258)
评论(0)
推荐(0)
摘要:
//18结构体的赋值//结构既然是一种数据类型,那么我们就可以象变量那样进行赋值操作,不过前提是必须两个结构都是同类型/*#include <iostream>using namespace std;struct people{ double weight; double tall;};int main(){ people Mick = {111.1, 99.9}; people Jack = {222.3,55.4}; cout<<Mick.tall<<" "<<Mick.weight<<endl; cout&l 阅读全文
posted @ 2012-09-24 22:23
简单--生活
阅读(181)
评论(0)
推荐(0)
摘要:
//17结构体与类的区别//我们知道结构体是C时代的产物,到了C++之后结构体有了很大的变化,可以增加函数,可以设置成员的公有,私有和保护属性,可以从别的类继承,也可以被别的类继承,可以有虚函数据//唯一与类不同之处的地方是,结构体的成员默认是public,而类的成员默认是private./*#include <iostream>#include <string>using namespace std;//由于结构体的这种默认公有属性,我们一般用来保存多个数据类型,比如说//我们要保存一个人的姓名,性别,年龄,身高和体重struct A{//public: int ge 阅读全文
posted @ 2012-09-24 22:23
简单--生活
阅读(273)
评论(0)
推荐(0)
摘要:
// 16 函数如何返回字符串/*#include <iostream>using namespace std;char *get(char *str);int main(){ //上一节的末尾处讲过,只要获得字符串中第一个字符的地址就可依次找到其它字符,因此只要将字符串中第一个字符的地址返回,就相当于返回了整个字符串 //既然它们都可看作是字符串第一个字符的地址,那么在函数中直接将它们返回,也就等同于返回了字符串的第一个字符的地址,从而间接地达到了返回整个字符串的目前的,另外由于返回的是地址,自然而然地避免了调用复制构造函数,系统的开销也大大减少 char c[10] = &qu 阅读全文
posted @ 2012-09-24 22:22
简单--生活
阅读(334)
评论(0)
推荐(0)
摘要:
// 15 char型字符串与函数/*#include <iostream>using namespace std;//int get(const char*p);int get(const char p[]);int main(){ //char型字符串也就是C风格的字会串,它由一个串字符组成,结尾为字符串结束标志'\0' //字符串名是第一个字符的地址,因此我们将字符串名作为参数传递到函数时,其实就是将地址传递到函数中去 //由于字符串的最后一个字符是'\0',因此我们不必传递字符长度,只要在函数中设置一个循环体,把结束字符作为循环结束的条件即可 阅读全文
posted @ 2012-09-24 22:22
简单--生活
阅读(605)
评论(0)
推荐(0)
摘要:
// 12判断string类型字符串是否为空/*#include <iostream>#include <string>using namespace std;int main(){ string s1 = ""; if(s1.empty()){ cout<<"s1为空"<<endl; }else{ cout<<"s1不为空:"<<s1<<endl; } return 0; */ 阅读全文
posted @ 2012-09-24 22:07
简单--生活
阅读(674)
评论(0)
推荐(0)
摘要:
// 13 交换两个字符串内容的swab函数/*#include <iostream>#include <string>using namespace std;int main(){ //C库函数中有一个swab函数,该函数用来交换字节,那么可不可以交换两个字符串的内容呢? char ch1[15] = "ofru"; char ch2[] = ""; //swab(ch1,ch2,strlen(ch1)); //不知道什么毛病,用swab总是动行后提示错误 //cout<<"ch1:"<&l 阅读全文
posted @ 2012-09-24 22:07
简单--生活
阅读(2110)
评论(0)
推荐(0)
摘要:
// 14 将string型字符串转为char字符串/*#include <iostream>#include <string>using namespace std;int main(){ string str="hello word"; const char *ch; ch = str.c_str(); cout<<ch<<endl; return 0;}*/ 阅读全文
posted @ 2012-09-24 22:07
简单--生活
阅读(219)
评论(0)
推荐(0)

浙公网安备 33010602011771号