目录
组合类
作用域
static
friend
常对象·常成员函数
常引用
对象指针(指向对象)
string
组合类
类的组合/聚合:将已有的类的对象作为新的类的成员。
组合类初始化:内嵌对象成员初始化 + 普通数据成员初始化。
类必须先定义后使用 若两个类互相引用,则需要使用前向引用声明
† 结构体与类的唯一区别:对于未指定访问控制属性的成员,在类中默认为私有成员;而在结构体中则默认为公有成员。
作用域
全局变量可以达到共享数据的目的,但安全性得不到保证:任何函数都可以自由修改全局变量的值,很有可能偶然失误,全局变量的值被错误修改,导致程序的失败
static
如果需要在同一个类的多个对象之间实现数据共享,可以使用静态数据成员。
静态成员函数可以直接访问静态成员,但不能直接访问非静态成员
► 静态成员函数访问非静态数据成员时,需指明对象/
/ 静态成员函数中有以下语句:
cout << height; // 若 height 是 static,则合法
cout << width; // 若 width 是非静态数据成员,则不合法
friend
►友元包括:友元函数与友元类
►友元类的所有函数成员都是友元函数
class Point
{public:... ...friend float dist(Point & p1, Point & p2);private:int x, y;};
float dist(Point & p1, Point & p2){double x=p1.x-p2.x, y=p1.y-p2.y;return sqrt(x*x+y*y);}
友元关系不能传递
友元关系是单向的
友元关系不能被继承
——————————————————————————以上为第十讲
常对象·常成员函数
常对象只能调用常成员函数
常成员函数可以被普通对象调用
无论对象是否为常对象,常成员函数的目的对象都将被视为常对像
常引用
常引用是为了常对象而存在的,正如指向常量的指针是为了常量存在的
常引用可以绑定到常对象,也可以绑定到普通对象
不能通过常引用来修改常引用所绑定的对象
普通引用不能绑定到常对象
对象指针(指向对象)
this 指针:隐含在非静态成员函数中的特殊指针,指向目的对象,由系统自动生成
可以防屏蔽:
string
string 对象可以直接赋值 但数组字符串不能!
————以上为第十一