类:
类中的两个特殊的成员函数:构造函数和析构函数 。当定义类对象时,c++会自动调用构造函数对数据成员进行 初始化,相反,当对象终止时c++会自动调用析构函数进 行“回收资源”处理。
构造函数的特点:它的名字与类名相同,当定义对象时,将自动调用该函数。
析构函数的特点:是由类名前面加“~”构成,没有返回值,且析构函数不接收任何参数。对象生命期结束前应该完成对象资源的清理。 如:在创建对象时为数据成员 开辟了空间,则需要则通过析构函数在对象的生命期结 束前对所开辟的空间心释放。
定义类的语法形式:
class 类名称
{
public:
外部接口
protected:
保护型成员
private:
私有成员
};
声明一个对象:类名 对象名;
访问对象的成员:
《1》访问对象的数据成员:对象名.数据成员名
《2》访问对象的函数成员:对象名.函数成员名(参数表)
成员函数的实现:
返回值类型(void or int)类名::函数成员名(参数表)
{
函数体
}
类成员函数的默认值一定要写在类定义中。
内联成员函数的声明有两种方式:隐式声明(将函数体直接放在类体中)和显式声明(在函数返回值类型前加上inline,类定义中不加入函数体)。
构造函数和析构函数:构造函数也是类的一个成员函数,且构造函数的函数名和类名相同,没有返回值。构造函数通常声明为公有函数。
复制构造函数:把初始值对象的每个数据成员的值都复制到新建立的对象中。
复制构造函数的格式:
class 类名
{
public:
类名(形参表);
类名(类名&对象名);
...
};
类名::类名(类名&对象名);
{
函数体
}
字符串常量是用一对双引号括起来的字符序列。
执行很多字符串操作需要借助cstring头文件中的字符串处理函数。
string类应用举例:
#include<string>
#include<iostream>
using namespace std;
inline void test(const cahr *title,bool value){
cout<<title<<"returns"<<(value?"true":"false")<<endl;
}
int main(){
string s1="DEF";
cout<<"s1 is "<<s1<<endl;
string s2;
cout<<“please enter s2: ";
cin>>s2;
cout<<"length of s2: "<<s2.length()<<endl;
test("s1<=\"ABC\"",s1<="ABC");
test("\"DEF\"<=s1","DEF"<=s1);
s2+=s1;
cout<<"s2=s2+s1:"<<s2<<endl;
cout<<"length of s2: "<<s2.length()<<endl;
return 0;
}
如果希望从键盘读入字符串,直到行末为止,不以中间的空格作为输入的分隔符,可以使用头文件string中定义的getline。例如:getline(cin,s2);输入s2.getline还允许在输入字符串时增加其他分隔符。使用方法是把可以作为分隔符的字符作为第三个参数传递给getline。例如:getline(cin,s2,‘,’);