1.类的“嵌套”:当类A包含类B的头文件时,就像类B被嵌套在类A中了,在类A中可以定义类B的对象并调用对象的公有成员。
2.常成员函数和常数据成员:在点类中举例说明。
以点类和线类为例:
点类
Coordinate.h
#ifndef COORDINATE_H
#define COORDINATE_H
class Coordinate
{
public:
//构造函数
Coordinate(int X = 0,int Y = 0);//默认值只需在声明时写出,定义时不用写
Coordinate(const Coordinate &coor);//拷贝构造函数
//数据封装函数
void setX(int _x);
void setY(int _y);//与下面同名。则对象变量会默认调用上面这个,如果没有上面这个,就会调用下面的。
void setY(int _y)const;//常成员函数。对象常量只能调用公有的常成员函数,其他非常的不可调用,所以调用下面的。
//常成员函数等价于void setY(const Coordinate* this,int _y);则当前对象(*this)不可修改
//一般功能函数
int getX();
int getY();
int getX()const;//const的Coordinate类对象(对象常量),只能调用有const修饰的函数
int getY()const;//如果没有上面的int getY(),那么对象变量也可以调用这个int getY()const
//析构函数
~Coordinate();
private:
const int m_iX; //常数据成员,一旦被赋初值(构造函数中)就不能再改变。
int m_iY;
};
#endif
Coordinate.cpp
#include"Coordinate.h"
#include<iostream>
using namespace std;
//构造函数(不用加const,常对象初始化时也会调用)
Coordinate::Coordinate(int X,int Y):m_iX(X)
{
//m_iX = X;常成员函数只能用列表初始化
m_iY = Y;
cout <&