class 类名{
访问范围说明符:
成员变量1
成员变量2
成员函数声明1
成员函数声明2
访问范围说明符:
更多成员变量
更多成员函数声明
...
};
;
结束。
返回值类型 类名:函数名()
{
函数体
}
类名 对象名;
此处,“对象名”的命名规则和普通变量相同。对象也可以看作“类变量”。#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; //r是一个对象 cin >> w >> h; r.init( w,h); cout << "It's area is " << r.area() << endl; cout << "It's perimeter is " << r. perimeter(); cout << sizeof(CRectangle) << endl; return 0; }第 3~10 行定义了一个类,类的名字就是 CRectangle。在 C++ 中,每个类的名字都是一种类型,可以像 int、double 等基本类型那样来使用。因此,CRectangle 也是一种程序员自己定义的类型的名字。
对象名.成员名
的方式。例如:
CRectangle r1, r2; r1.w = 5; r2.init(5, 4);
r1.w = 5;
这条语句直接对 r1 对象的 w 成员变量进行赋值。它不会影响 r2。对象名.成员函数名
的方式可以调用成员函数,并且被调用成员函数是作用在该对象上的。例如,r2.init(5, 4);
这条语句就调用了 CRectangle 类的 init 成员函数,该成员函数执行时是作用在 r2 这个对象上的。r2.init(5, 4);
这条语句在 init 函数执行期间访问的 w 和 h 就是属于 r2 这个对象的。执行r2.init(5, 4);
不会影响 r1。对象名.成员名
方法,还可以用指针->成员名
的方式来访问对象的成员。例如:
CRectangle rl, r2; CRectangle* p1 = &r1; CRectangle* p2 = &r2; p1 -> w = 5; //此处的 w 属于 p1 指向的对象 p2 -> init(5, 4); //init函数作用在 p2 指向的对象上
引用名.成员名
的方式访问对象的成员。例如:
CRectangle r2; CRectangle & rr = r2; rr.w = 5; rr. init(5, 4); //rr的值改变,r2的值也改变
init(2, 4);
这条语句是不能编译通过的。因为编译器不清楚这个 init 函数是作用在哪个对象上面的,进入 init 函数以后,其中访问的 w 和 h 的内存地址在哪里无从知晓,因而也就无法编译了。struct CRectangle{ public: int w, h; //成员变量,宽度和高度 void init(int w_, int h_); //成员函数,设置宽度和高度 };没有成员函数的 struct 还是称作“结构”,结构变量不是对象;有成员函数的 struct 就是类。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有