C++学习日记(二)————初始字符串类型及封装
2018-06-17 21:56:48来源:未知 阅读 ()
使用频率高,但操作复杂的数据有哪些?
做下总结:
int; double;float;char;bool这些类型用的比较频繁,但并不复杂。但对于字符串来说(char数组)用的频繁但操作又复杂,只能用一系列函数来引用,如何克服呢?
字符串类型:string 就此登场!
举个例子
设置好头文件后,直接定义一个名字,爱好,并且可以直接输出,很方便!
下面是初始化string的使用方法
string的便捷不只体现在初始化的方面,还体现在后面一整套的人性化的服务。如下:
代码举例:
#include <iostream> #include <stdlib.h> #include <string> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(void) { string name; cout<<"Please input your name"; getline(cin,name); if(name.empty()) { cout<<"input is null.."<<endl; system("pause"); return 0; } if(name=="imooc") { cout<<"you are a adminstractor"<<endl; } cout<<"hello"+ name<<endl; cout<<"your name length :" << name.size() <<endl;//字符串和非字符串连接时不可以用“+”号,要用“<<”号 cout<<"your name first letter is:"<<name[0]<<endl; system("pause"); return 0; }
如果输入任意一个名字,比如:
如果输入管理员名称(imooc):
数据的封装
面向对象的基本思想:
以对象为中心,具体来说就是要以,“谁做什么”来表达程序的逻辑,体现到代码的层面,就是将所有的程序,数据,操作转化为成员函数的调用,换句话说,对象在程序中的所有行为,都是通过调用自己的函数,来完成。
那如何通过函数来封装数据成员呢?如下例
以年龄这个数据为例,我们定义了两个成员函数,“setAge”用来设置年龄的值。另一个是“getAge”用来读取年龄的值。
这样操作虽然操作上麻烦些,但提高了代码的安全性和整体性,值得拥有!
数据封装的优点:
比如此例中,给“stu.age”赋值1000的话,显然是有问题的,但如果通过数据的封装,就可以把这个问题给解决掉了。
给“setAge”标定函数意义,规定一个取值的范围,就把上面的问题给解决了!
对于有些数据成员,我们只希望这些成员被外界读取,而不希望被外界改写,怎么写呢?如下例:
我们只希望通过这样一个成员,获取“轮子的个数”而不希望设置,那就这样写。
下面是一个封装的代码例子
#include<iostream> #include<string> using namespace std; /*数据的封装 定义一个Student类,含有如下要求: 1.姓名:name 2.性别:gender 3.学分(只读):score 4.学习:study */ class Student { public: void setName(string _name) { m_strName = _name; } string getName() { return m_strName; } void setGender(string _gender) { m_strGender = _gender; } string getGender() { return m_strGender; } int getScore() { return m_iScore; } void initScore() { m_iScore = 0; } void study(int _score) { m_iScore+=_score;//m_iScore=m_iScore+_score; } private: string m_strName; string m_strGender; int m_iScore; }; int main(void) { Student stu; stu.initScore(); stu.setName("zhangsan"); stu.setGender("男"); stu.study(5); stu.study(3); cout<<stu.getName()<<" "<<stu.getGender()<< " "<<stu.getScore()<<endl; system("pause"); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash