读书人

简单的构造函数有关问题

发布时间: 2012-06-14 16:00:31 作者: rapoo

简单的构造函数问题
class Test
{
private:
string test;
public:
Test(const string &str=""):test(str){}
Test(const Test &t):test(t.test){}
}

有个疑问,为什么第二个构造函数里,t.test能够成功,test不是私有的吗?

[解决办法]
因为拷贝构造函数是放在本身这个类里的,而类中的函数可以访问这个类的对象的所有成员,当然包括私有成员了。
String(const String &other)
{
m_data=other.x;//x是String类的私有成员
}

引用参数对象也是String类的,所以没问题
[解决办法]
.........是私有的啊,所以只能在本类函数里面调用啊
[解决办法]
因为你用的教材太垃圾,竟然没跟你解释这个问题。
[解决办法]
作用域是类的,不是对象的。
[解决办法]
1楼正解
[解决办法]
如果自己都不能用,还要这个属性做什么。
[解决办法]

探讨

作用域是类的,不是对象的。

[解决办法]
这个问题我之前也迷茫过
总理解成通过对象t去访问它的私有变量,然后和类的对象不能访问它的私有变量相矛盾
后面自己不管类的对象不能访问它的私有变量这句话了
因为能不能访问,最终都是通过作用域来看的
在类的里面,函数就能够访问它本身的私有变量
[解决办法]
听陶大妈的.换教材.
[解决办法]
+1
探讨
作用域是类的,不是对象的。

读书人网 >C++

热点推荐