(1)类是对具有相同属性和行为的一组对象的抽象与统一描述。是用户自定义的数据类型
(2)类的定义包括行为和属性两个部分。
(3)属性以数据表示,行为通过函数实现。
3.注意事项
(1)类的成员可以是其他类的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员。
(2)类定义必须以分号“;”结束。
(3)类与结构体的区别:没有明确指定类成员的访问权限时,C++结构体的成员是公有的,而类的成员是私有的。
类的成员函数是实现类的行为属性的成员。
一般将成员函数声明为函数原型,在类外具体实现成员函数。
返回值类型 类名::成员函数名(参数表)
{
函数体
(1)对象是类的实例或实体。
对象成员的访问包括:
●圆点访问形式:对象名.公有成员
#include<iostream>
using namespace std ;
int max ( int a , int b );
int max ( int a , intb, int c ) ;
int main ()
{ cout << max ( 5, 3 ) << endl ;
cout << max (4, 8, 2 ) << endl ;
}
int max ( int a , int b )
{ return a > b ? a : b ; }
int max ( int a , int b, int c )
{ int t ;
t =max ( a , b ) ;
return max ( t , c ) ;
}
当创建对象时,系统自动调用构造函数
为对象分配空间;对数据成员赋初值;请求其他资源
当一个对象作用域结束时,系统自动调用析构函数
为类Date建立一个构造函数。
#include <iostream.h>
class Date {
public:
Date(); // 无参构造函数
Date(int y,int m,int d);
void showDate();
private:
int year, month, day;
};
Date::Date() // 构造函数的实现
{ year=0; month=0;day=0; }
Date::Date(inty,intm,intd)
{ year=y; month=m; day=d; }
inline void Date::showDate()
{ cout<<year<<"."<<month<<"."<<day<<endl;}
(1)在类的非静态成员函数中返回类对象本身或对象的引用的时候,直接使用return*this,返回本对象的地址时,returnthis。
(2)当参数与成员变量名相同时,如this->x= x,不能写成x = x。
以下三种情况下由编译系统自动调用:
常成员
静态成员
友元
1.常数据成员
使用const说明的数据成员称为常数据成员。
如果在一个类中说明了常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化,而任何其他函数都不能对该成员赋值。
(1)静态成员函数在类外定义时不用static前缀。
(2)静态成员函数主要用来访问同一类中的静态数据成员。
(3) 私有静态成员函数不能在类外部或用对象访问。
(4)可以在建立对象之前处理静态数据成员。
(5)编译系统将静态成员函数限定为内部连接(在其他文件中不可见)。
(6)静态成员函数中是没有this指针的。
(7)静态成员函数不访问类中的非静态数据成员。如有需要,只能通过对象名(或指向对象的指针)访问该对象的非静态成员。
#include <iostream>
#include <string>
using namespace std;
class Person{
stringname;
public:
Person(stringa_name)
{name=a_name;cout<<name<<"says hello!"<<endl;}
~Person()
{ cout<<name<<"says goodbye!"<<endl; }