gpt4 book ai didi

c++ - 如果一个类的私有(private)成员不能被非成员函数访问,那么 main() 怎么能在这个程序中打印电话的值呢?

转载 作者:行者123 更新时间:2023-12-01 14:44:15 31 4
gpt4 key购买 nike

#include <iostream>

class student
{
int phone;
public:
student(int a)
{
phone = a;
}

};

int main()
{
class student s1(10);
printf("%p \n",&s1);
printf("%d \n",*(&s1));
// printf("%d \n", s1.phone);
// printf("%p",&s1.phone);


return 0;
}

输出:
0x7fffd5aa5abc
10

非成员函数可以访问类对象的地址吗?如果是,那么为什么我们不能访问其成员?

最佳答案

Can a non member function has access to addresses of class objects? If yes then why cant we have access to its members?



你有一个普遍的误解。数据封装(与 const 正确性等其他工具一样)是一种帮助您编写更好的程序(即错误更少)的工具。不是 jail 或看门狗会试图使它成为不可能。你想破坏你管理程序复杂性的能力——继续,让所有成员公开,不要使用 const 限定符等等。如果您想使用这些工具 - 他们将成为您的 friend 。这意味着通常您在不应该访问该数据时尝试访问该数据 - 编译器会提醒您您做错了什么,因此您可以修复错误。这并不意味着它会监视内存并神奇地限制您对它的访问。

关于c++ - 如果一个类的私有(private)成员不能被非成员函数访问,那么 main() 怎么能在这个程序中打印电话的值呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717290/

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