【发布时间】:2015-05-19 07:56:57
【问题描述】:
我知道类的成员只能通过 set 和 get 方法间接访问。以下 C++ 程序的输出是什么?为什么这可能?有人可以向我解释为什么这是一种糟糕的编程风格吗?
#include <iostream>
using std::cout;
using std::endl;
class Test
{
private:
int N;
public:
void setN(int N_in) { N = N_in; };
int getN(){ return N; };
int* getptrN(){ return &N; };
};
int main()
{
Test A;
A.setN(5);
int* ptr = A.getptrN();
cout << A.getN() << endl;
*ptr = 10;
cout << ptr << endl;
cout << A.getN() << endl;
return 0;
}
【问题讨论】:
-
听起来像是功课。
-
你聪明 =) 你不会帮忙吗?...我还有更多要问的!
-
提供一个返回指向成员的指针的方法可以绕过封装。因此,这是一个坏主意,因为您无法保证对象处于已定义的状态。
-
“下面的 C++ 程序的输出是什么?” 你连运行都不知道吗?即使您的 PC/设备上没有编译器,您也可以将代码剪切并粘贴到在线编译器(例如 ideone.com)中。