string_类_构造函数

string

include <iostream>

include <string>

using namespace std;

int main(int argc , char* argv[] ) {

// 字符串处理类:string 
string strObj;

strObj = "123456789";
strObj += "abcdefg";
strObj = string( "12" ) + "34" + "56";
string strObj2 = "123456";
if( strObj == strObj2 ) {
    cout << strObj << "等于" << strObj2 << endl;
}

int nIndex = strObj.find( '5' );
cout << "5 在" << strObj << "中第" << nIndex << "处" << endl;

return 0;

}

include <iostream>

include <string>

using namespace std;

class Person {
public:
int getAge( ){return m_age; }

Person& setAge(int age ){
    Person* _this = this;
    _this->m_age=age;
    return *this;
}

double getHeight( ){return m_height; }

private:
string m_name; // 名字
double m_height;//身高
int m_age;//年龄
};

struct MyPerson {
string m_name; // 名字
double m_height;//身高
int m_age;//年龄
};

void setAge( MyPerson* pObj , int nAge) {
pObj->m_age = nAge;
}

int main(int argc , char* argv[] ) {
MyPerson myObj1 , myObj2;
setAge( &myObj1 , 100 ) ;
setAge( &myObj2 , 50 );

Person obj1 , obj2;
obj1.setAge(100); // 有一个隐含的参数,
obj2.setAge( 50 ).setAge(0).setAge(5).setAge(0);


return 0;

}

构造函数

include <iostream>

using namespace std;

class CNumber {
private:
int m_nNum;
public:
// 拷贝构造: 定义一个对象时,将另一个对象来初始化新的对象
// 就相当于已有的对象拷贝一份到新的对象中.
// 调用时机/调用场合 : 定义变量, 并以本类对象初始化
CNumber(const CNumber& obj){ }
// 转换构造 : 定义一个对象时,将其他类型的值初始化新的对象
// 调用时机/调用场合:定义变量, 并以非本类类型的值初始化
// 禁用隐式转换的关键字:explicit
/explicit/ CNumber(int nNum ):m_nNum(nNum){ }
};

class MyClass {
char* m_pStr;
const int m_constNum;
const int& m_rnNum ;
CNumber m_numObj;
public:
// 初始化列表的初始化顺序: 按照成员变量的声明顺序来初始化
MyClass( )
: m_constNum(0),
m_rnNum( m_constNum),
m_pStr(new char[10]),
m_numObj( 0 )/显示为成员调用构造/
{
cout << "MyClass构造函数被调用" << endl;
}
~MyClass( ) {
cout << "MyClass析构函数被调用" << endl;
}
};

class CPerson {
int m_nAge;
double m_heigth;
public:
CPerson() :m_nAge() , m_heigth() { }
CPerson( int age , double height )
:m_nAge( age ) , m_heigth( height )
{}
};

CNumber fun(const CNumber& obj ) {
return 1;
}

int main( int argc , char* argv[ ] ) {

// 1被隐式转换成CNumber类型
// 隐式转换成功的原因在于: CNumber类中提供了一个int型的转换构造
// 发生的事情: 为fun函数的形参CNumber obj调用了转换构造
// 函数,将整型的1构造成一个CNumber的对象了.
fun( CNumber(1) );

CPerson perObj1;
CPerson perObj( 18 , 1.8 );

CNumber numObj(0);
CNumber numObj1 = numObj;
CNumber numObj2(numObj);
CNumber numObj3 = 0 ;
{
    MyClass obj;
}

return 0;

}

============
自定义文件类

include <iostream>

using namespace std;

// 文件处理类
// 1. 能够打开一个文件
// 2. 能够读写一个文件
// 3. 能够设置文件的读写位置
// 每一个类定义出来的对象就表示一个文件.
class CFile{
private:
FILE* m_pFile;
public:
CFile(const char* pFilePath=NULL)
:m_pFile(NULL) {
open(pFilePath); // 调用成员函数打开文件.
}

~CFile(){
    if(m_pFile != NULL)
        fclose(m_pFile);
}

bool open(const char* pFilePath){
    // 打开文件
    fopen_s(&m_pFile , pFilePath , "w+");
    return m_pFile != NULL;
}

// 读取文件内容
void read(char* pBuff , int nSize){
    if(m_pFile == NULL)return ;
    fread(pBuff , 1 , nSize , m_pFile);
}
// 将缓冲区的内容写入到文件中.
void write(const char* pBuff , int nSize)
{
    if(m_pFile == NULL)return ;
    fwrite(pBuff,1,nSize,m_pFile);
}

void seek(int pos){
    fseek(m_pFile,pos,SEEK_SET);
}

}

int main()
{
CFile file("1.txt");

file.write("hello" ,strlen("hello") );
int nNum = 100;
file.write((char*)&nNum , sizeof(nNum));

file.seek(0);

char buff[100];
file.read(buff,10);
cout << buff<<endl;

return 0;

}

==============
自定义IO类

include <iostream>

using namespace std;
class CIoHelper{
public:
CIoHelper& print(char val){cout << val; return this;}
CIoHelper& print(int val) {cout << val; return this;}
CIoHelper& print(const char
pStr) {cout<<pStr; return this;}
CIoHelper& print(int
arry,int nCount){
if( arry == nullptr) return;
for(int i = 0 ; i< nCount ; ++i)
cout <<arry[i]<<',';
return this;
}
CIoHelper& scan(char& val, const char
message="")
{
cout << message;
cin >> val;
return this;
}
CIoHelper& scan(int& val, const char
message=””){
cout<<message;cin>>val;
return this;
}
CIoHelper& scan(char
const pStr, const char
message=””){
cou<<message; cin>> pStr;
return this;
}
CIoHelper& scan(int
arry,int nCount, const char* message=””){
cout<<message;
for(int i = 0; i<nCount;++i){
cin >> arry[i];
}
return *this;
}
};

int main()
{
CIoHelper ioObj;
ioObj.print('4').print(12).print("hello");
char ch;
int nNum;
char buff[32];
int nArray[10];
ioObj.scan(ch,"请输入一个字符").scan(nNum,"请输入一个整数");
ioObj.scan(buff,"请输入一串字符:");
}

============
自定义cstring

include <iostream>

using namespace std;

class CString{
private:
char* m_pStr;
public:
CString(const char* pStr=nullptr):m_pStr(NULL)
{
if(pStr){
int nLen = strlen(pStr);//获取字符串的长度
// 申请对空间,以保存传入进来的字符串.
m_pStr = new char[nLen + 1];
strcpy_s(m_pStr,nLen+1,pStr);
}
}
CString& append(const char* pStr)
{
// pStr -->> ["hello"]
// m_pStr -->> ["123456789"]
// pNewStr-->> [ ]<<==new[]
// pNewStr-->> ["123456789" ]<<==strcpy
// pNewStr-->> ["123456789hello" ]<<==strcat
// 得到两个字符串的总长度
int nSize = strlen(m_pStr) + strlen(pStr)
// 申请新空间
char* pNewStr = new char[nSize + 1];
sprintf_s(pNewStr,nSize+1,"%s%s",m_pStr,pStr);

    // 释放旧的空间
    delete[] m_pStr;
    // 将新空间的首地址保存到m_pStr
    m_pStr = pNewStr;
}

CString& append(int val){
    char buff[32];
    // 将整型保存到字符数组中.
    sprintf_s(buff,32,"%d",val);
    // 调用自身的成员函数(追加字符串)
    append(buff);
}   

};

int main()
{
CString str("123456");

str.append("helo").append(12).append("world");

}

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容