use*_*012 2 c++ encapsulation casting private class
我不明白我在这里提供的代码中提到的两行.为什么我需要使用int*
?我如何访问私有变量?我不确定我用这两行做什么.请详细解释.
问题线:
int *p = (int *) &s;
*p=10;
Run Code Online (Sandbox Code Playgroud)
主要代码:
#include <iostream>
using namespace std;
class sample {
private:
int a;
public:
void function () {
a=5;
}
void printA () {
cout<<"value is "<<a<<endl;
}
};
int main () {
sample s;
s.function();
s.printA();
int *p = (int *) &s;
*p=10;
s.printA();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
使用(int*)
这是一个非常糟糕的主意.您正在使用一个不是int的类作为int.这很糟糕.
你不能访问私人成员,你不应该,这就是他们私有的原因.
int *p = (int *) &s;
*p=10;
Run Code Online (Sandbox Code Playgroud)
这意味着,您有一个s
类型的对象sample
,并且它有一个数据成员int a;
.你写的是有效的,因为a
恰好是在课程的开头.
在某些情况下,类的布局是有保证的,您可以在这里阅读:
归档时间: |
|
查看次数: |
90 次 |
最近记录: |