gpt4 book ai didi

c++ - 在私有(private) std::string 继承上访问字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:30 26 4
gpt4 key购买 nike

我在书上看过这个例子:

class Test: private std::string
{
public:
Test():std::string("How?")
{
}
};

int main(int argc, char** argv)
{
Test t;

std::cout<<(std::string&)t<<std::endl;

return 0;
}

我不知道当我输入类名时它是如何打印“how”的?是因为运营商吗?但我知道,当你进行私有(private)继承时,公共(public)和 protected 变量和方法将在外部被视为“私有(private)”。

所以我的问题是,它是如何准确打印“How”的?

编辑:

那么谁持有字符串值“How”,它是如何打印的?因为它是通过排版打印出来的。

最佳答案

这说明了 C 风格转换的危险之一:它是唯一忽略继承访问说明符的转换。如您所见,转换成功地挖掘出 std::string 基引用,即使它是私有(private)的。如果您使用 static_cast 尝试此操作,它将无法编译。

编辑:

tstd::string 子对象包含 "How",因为您在 Test 中初始化了它> 的构造函数。转换为对基类的引用用于访问相应的子对象。

关于c++ - 在私有(private) std::string 继承上访问字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com