private :只能被本类的或友元类中的成员函数所引用,类外不可调用
友元类
friend class 类名;
class A{
public:
friend class B;
};
说明B是A的友元类
使用友元类时注意:
(1) 友元关系不能被继承
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
定义对象也可以:不出现类名,直接定义对象(少用)
class
{
······
}stu1,stu2;
在类外定义成员函数
必须在函数名前加上类名予以限定,使用‘ ::’作用域运算符,声明函数是哪个类的
如果‘ ::’之前没有类名或是函数名之前无‘ ::’与类名,则该函数属于全局函数(一般函数)
必须先在类中做函数原型声明,如下:
class Student{
public:
void display();//函数原型声明
private:
int num;
char name[20];
char sex;
};
void Student::display() //于类外定义函数
{
cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex;
}
Student stu1,stu2;
对象成员的引用
通过对象名和成员运算符访问对象中的成员,如:
stu1.num=100;
‘.’为成员运算符,即: 对象名.成员名
通过指向对象的指针访问对象的成员
#include<iostream>
class Time {
public:
int hour;
int min;
int s;
};
int main()
{
Time t,* p;//定义对象t和指针p
p = &t;
cout << p->hour;
}
通过对象的引用变量来访问对象中的成员
Time t1;
Time &t2=t1; //t2与t1等价
cout<<t2->hour;
且t2与t1占同一段内存