C++中类的成员访问属性问题

2024-12-16 03:31:52
推荐回答(4个)
回答1:

确实是vc6里面的bug,vc2003里没有问题。改成下面的形式在vc6里面可以通过,可见是friend声明时编译器找不准函数类型了。#include
#include
using namespace std;
//定义一个string类
class String
{public:
String()//初始化对象数据成员
{p=NULL;}
String(char *str);//重载构造函数
void display();
public:
char *p;
};
String::String(char *str)//定义构造函数
{
p=str;//使P指向实参字符串
}void String::display()
{cout<(String &str1,String &str2)//定义运算符重载函数
{
if(strcmp(str1.p,str2.p))
return true;
else return false;
}int main()//编写测试函数
{String str1("Hello"),str2("Book");
cout<<(str1>str2)<return 0;
}

回答2:

1. 因为友元函数可以操作类的私有数据成员;
2. 可能是VC6的一个BUG,在Borland的C/C++编译器中是正常的,因为这个用法在C/C++规范中是合法的。

回答3:

私有成员在外边当然不能访问了!你可以设置公有接口来访问:char* String::GetString(){return p;}

回答4:

私有成员 不能直接在外部调用 必须在公有用函数接口来访问 6784746