/***********************************************************************
类和对象初步
面向对象的程序设计的基本特点:抽象,封装,继承,多态
类的定义:
class 类名{
访问范围说明符:
成员变量;
......
成员函数;
......
};
访问范围一共有三种:public,private,protected
成员变量、成员函数的写法与普通的变量、函数相同。
一个类的成员函数之间可以相互调用。类的成员函数可以重载 ,也可以设定函
数的默认值。
成员函数的定义可以在类外:
返回值类型 类名::函数名{
函数体;
}
所谓成员函数作用于某个对象上,指的是进入该成员函数时,函数中访问到的成
员变量是属于该对象的。
访问对象成员:
对象名.成员名
#include <iostream> using namespace std; // 矩形类 class CRectangle{ public: int w, h; void init(int w_, int h_); // 设置宽度和高度 int area(); // 求面积 int perimeter(); // 求周长 }; void CRectangle::init(int w_, int h_){ w = w_; h = h_; } int CRectangle::area(){ return w*h; } int CRectangle::perimeter(){ return 2*(w + h); } int main() { int w, h; CRectangle r; cin >> w >> h; r.init(w, h); cout << "It‘s area is " << r.area() << endl; cout << "It‘s perimeter is " << r.perimeter() << endl; cout << sizeof(CRectangle) << endl; return 0; }
类成员的访问范围:
访问范围一共有三种:public,private,protected
public: 指定公有成员,一个类的公有成员在任何地方都可以被访问
private:用来指定私有成员,不论是成员变量还是成员函数,都只能在
该类的成员函数内部才能被访问
设置私有成员的机制叫做隐藏,隐藏的目的是强制对变量成员的访问
要通过成员函数进行。这样做的好处是如果以后修改了成员变量的类
型等属性,只需修改成员函数即可。否则需要修改所有访问成员变量
的语句。
隐藏机制可以避免对对象的不正确操作。
protected:用来指定保护成员
如果某个成员前面没有访问范围说明符,则对于class默认为私有成员
#include <iostream> #include <cstring> using namespace std; class CEmployee{ private: char szName[30]; public: int salary; void setName(char *name); void getName(char *name); void averageSalary(CEmployee e1, CEmployee e2); }; void CEmployee::setName(char *name){ strcpy(szName, name); } void CEmployee::getName(char *name){ strcpy(name, szName); } void CEmployee::averageSalary(CEmployee e1, CEmployee e2){ salary = (e1.salary + e2.salary) / 2; } int main() { CEmployee e; // strcpy(e.szName, "Tom"); error,不能访问私有成员 e.setName("Tom"); e.salary = 50000; return 0; }
对象指针->成员名
和结构变量一样,对象之间可以使用"="相互赋值,但不能进行比较运算
***********************************************************************/