关于对象成员的访问,下面哪一种说法是错误的?
stud1.num=1001;//假设num已定义为公用的整型数据成员表示将整数1001赋给对象stud1中的数据成员num。其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。
Time t1; //定义对象t1 Time &t2=t1;//定义Time类引用变量t2,并使之初始化为t1 cout<<t2.hour;//输出对象t1中的成员hour由于t2与t1共占同一段存储单元(即t2是t1的别名),因此t2.hour就是t1.hour。对于对象引用类型,不能用“一>”运算符来访问其成员,因此B选项错误。
class Time{
public : //数据成员是公用的
int hour;
int minute;
};
Time t,*p;//定义对象t和指针变量p
p=&t;//使p指向对象t
cout<<p->hour;//输出p指向的对象中的成员hour 在p指向t的前提下,p->hour,(*p).hour和t.hour三者等价。 class Cat{
public:
int weight;
};
int main(){
Cat cat;//声明一个对象
cat.weight=5;
cout<<"The cat's weight is "<<cat.weight<<endl;
return 0;
} 由于Cat类中的成员函数weight被声明成了公有成员,那么我们就可以在main函数中首先创建一个Cat类的对象(cat),并利用.运算符就可以直接调用weight这个数据成员了。因此C选项正确。 class A{
friend class B;
private:
int aa;
};
class B{
public:
void output(){
cout << a.aa << endl;
}
private:
A a;
} 因此D选项的表述是错误的。