1.String类型
因为char类型的麻烦,我们可以使用string类型来实现一些功能:
#include <iostream>
#include<string>
using namespace std;
int main()
{
string name = "zhangsan"
string hobby("football");
cout << name << hobby << endl;
return 0;
}
(1)string类型初始化:(初始化string对象的方式)
string s1 s1为空串
string s2(“ABC”) 用字符串字面值初始化s2
string s3(s2) 将s3初始化为s2的一个副本
string s4(n,’c’) 将s4初始化为字符串‘c’的n个副本
(2)好用的一些功能:
s.empty()
s.size() 返回个数
s[n] 返回s中位置为n的字符
s1+s2 链接字符串
s1 = s2 替换S1位S2的副本
v1 == v2
v1 != v2
=======================================================
2.类和对象
定义一个类:
class 类名(类名一般用英文全拼,不要简写)
对象是类的一些功能,如定义一个student类,里面就可以包含姓名,年纪。。。等等一些数据成员
class student
{
public:
// 定义数据成员名字 m_strName 和年龄 m_iAge
string m_strName;
int m_iAge;
};
实例化对象通过栈的形式:
student stu;
通过堆的形式:
student *p=new student( )
if(NULL == p)
{
return 0; //申请失败
}
....
.....
delete p;
p = NULL;
设置对象的数据成员:
栈的形式使用 .调用
堆的形式使用 ->调用
=========================================
3.数据的封装
面向对象的基本思想围绕的是:
谁做什么来表达程序的逻辑,体现在代码方面就是将所有的数据操作转化为成员函数的调用,换句话说就是对象在程序中的所有行为都通过调用自己的函数来完成。
(1)通过函数封装数据成员:(例如student)
class student
{
public:
void setAge(int _age)
{m_iAge = _age}
int getAge()
{return m_iAge;}
private:
string m_strName;
int m_iAge;
}
//注意命名方式
//类中定义时命名规则为m_数据类型+名字
//类中函数形参为_名字
(2)ex:
定义一个Student类,包含名字一个数据成员,使用get和set函数封装名字这个数据成员。在main函数中通过new实例化对象,并打印其相关函数。
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:m_strName
* 数据成员的封装函数:setName()、getName()
*/
class Student
{
public:
// 定义数据成员封装函数setName()
void setName(string _name)
{
m_strName = _name;
}
// 定义数据成员封装函数getName()
string getName()
{
return m_strName;
}
//定义Student类私有数据成员m_strName
private:
string m_strName;
};
int main()
{
// 使用new关键字,实例化对象
Student *str = new Student();
// 设置对象的数据成员
str->setName("慕课网");
// 使用cout打印对象str的数据成员
cout << str->getName() <<endl;
// 将对象str的内存释放,并将其置空
delete str;
str = NULL;
return 0;
}
**写函数记得写类型啊!!!无返回值就写void有就写要返回的类型!!!要记得!!!