1.标准库类型string
(1)使用string 类要包含头文件<string>
(2)string的常用操作
1)使用标准库中iostream可以读写string对象
2)可以用循环读取未知数量的string对象(键盘输入时,遇空格或回车结束)
3)getline()函数(遇回车时结束)
4)size()函数返回string对象的长度,即对象中字符的个数
5)用下标运算符可以访问string对象中指定位置的字符(string对象s的下标范围从0到s.size()-1)
2.C++的数据类型
结构体
(1)结构体的定义与结构体变量的声明:
(2)结构体变量特点:
(3)结构体中可以定义函数:(此函数内定义变量,无需结构体变量名.成员名形式)
运算符重载
成员函数
3.指针和引用
指针
指针:持有一个对象的地址,称为指针“指向”这个对象。
取地址运算符“&”
指针存放指定类型的对象的地址,需要用取地址符“&”来获取对象地址。
类型 * 指针变量
例如
注意:
指针不能指向不同类型的对象,并且指针不能保存非地址值,也不能被赋值或初始化为不同类型的地址值。
自加、自减运算适用于指向数组元素的指针。
空指针
表示空指针的2种方法
①0; ②预处理常量NULL <cstdlib>
指针解引用运算符“*”
new运算符
delete运算符
const限定指针
数组元素和地址
begin()和end()
begin(数组名) 返回指向数组第一个元素的指针
end(数组名) 返回指向数组最后一个元素的下一个位置的指针
4.类
C++类定义的格式:
class 类名
{
public: 公有数据成员和成员函数;类的外部接口
protected: 保护数据成员和成员函数;仅允许本类成员函数及派生类成员函数访问
private: 私有数据成员和成员函数;仅允许本类成员函数访问
};分号不能省略
类的数据成员可以是其他类的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员
class Student //定义学生类Student
{
public: //声明类成员
void display();
private:
string name;
string id;
char sex;
int age;
double score;
}; //类定义以分号结束
成员函数的定义
对象的定义 (必须在定义了类之后,才可以定义类的对象)
类成员的访问
对象成员的访问包括:
●圆点访问形式:对象名.公有成 ●指针访问形式
类定义和使用时应注意:
函数重载
函数名相同,但参数不相同(类型不同,或者个数不同)的一组函数。
5.构造函数和析构函数
构造函数 (一定写两个以上:一个不带参的,一个带参的)
利用构造函数创建对象有以下两种方法:
构造函数初始化成员有两种方法:
A.使用构造函数的函数体进行初始化
class Date
{
int d, m, y;
public:
Date(int dd, int mm, int yy)
{
d=dd;
m=mm;
y=yy;
}
Date(int dd, int mm)
{
d=dd;
m=mm;
}
}
B.使用构造函数的初始化列表进行初始化
class Date
{
int d, m, y;
public:
Date(int dd, int mm, int yy):d(dd),m(mm),y(yy)
{ }
Date(int dd, int mm): d(dd),m(mm)
{ }
}
必须使用参数初始化列表对数据成员进行初始化的几种情况
类成员的初始化的顺序:按照数据成员在类中的声明顺序进行初始化,与初始化成员列表中出现的顺序无关
this指针
复制构造函数
#include <iostream>
using namespace std;
class Box{
public:
Box(int =10, int =10, int =10);
Box(const Box & b)
{height=2*b.height; width=2*b.width;length=2*b.length;}
int volume();
private:
int length, height, width;
};
浅复制与深复制
定义支持深复制的复制构造函数
类的其他成员
常对象
常成员函数
静态成员
静态函数仅可以访问静态成员,或是静态成员函数或是静态数据成员。
静态成员函数没有this指针,只能对静态数据操作
友元函数 不建议使用
友元类
friend class 类名;
6.运算符重载
运算符函数可以重载为成员函数或友元函数
1)一元运算符 Object op 或 op Object
2)二元运算符 ObjectL op ObjectR
双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但当操作数类型不相同时,必须使用友元函数。
3)重载运算符[ ]和( )
重载输出运算符“<<”(只能被重载成友元函数,不能重载成成员函数)
//定义输出运算符“<<”重载函数的一般格式如下:
ostream& operator<<(ostream& out,class_name& obj)
{
out<<obj.item1;
out<<obj.item2;
//.. .
out<<obj.itemn;
return out;
}
重载输入运算符“>>” (只能被重载成友元函数)
// 定义输入运算符函数 “>>”重载函数的一般格式如下:
istream& operator>>(istream& in,class_name& obj)
{
in>>obj.item1;
in>>obj.item2;
// . . .
in>>obj.itemn;
return in;
}