首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于private成员变量的一些疑义

2012-09-12 
关于private成员变量的一些疑问谭浩强书中的例子#include iostreamusing namespace stdclass Complexc

关于private成员变量的一些疑问
谭浩强书中的例子

#include <iostream>
using namespace std;

class Complex;

class Complex
{
public:
Complex(){real = 0; imag = 0;}
Complex(double r, double i){real = r; imag = i;}
Complex complex_add(Complex &c2);
void display();
private:
double real;
double imag;
};

Complex Complex :: complex_add(Complex &c2)
{
Complex c;
c.real = real + c2.real;
c.imag = imag + c2.imag;
return c;
}

void Complex :: display()
{
cout<<"("<<real<<","<<imag<<")"<<endl;
}


int main(void)
{
Complex c1(3, 4), c2(4, 5), c;
c = c1.complex_add(c2);
c.display();
return 0;
}

有点疑问的是complex_add为什么可以访问c2的私有数据成员?private是限定本类中的函数可以访问私有数据成员,还是本对象中的函数可以访问私有数据成员?

[解决办法]
同一类即可访问
[解决办法]
Complex complex_add是成员函数啊,成员函数就可以访问。
[解决办法]
同一类的所有对象都共享类中的每一个函数,并不是每一个对象都有各自独立的函数;
所以private是限定本类中的函数可以访问私有数据成员
[解决办法]
你可以看下this指针

热点排行