类:逻辑上封装,编译上独立
在 C++ 中, 结构体和类都具有构造函数、析构函数和成员函数,两者 只有 一个 区别: 结构体的访问控制默认为public, 而类的默认访问控制 是private。对于C++中的结构体而言,public、private、protected 的 访问控制都是在编译期进行检查,当越权访问时,编译过程中会检查出 此类错误并给予提示。
class obj{
int a;
int b;
void func1(){
}
};
- 每个实例化对象都会在内存中保存一份数据,但是对象的方法是共享的
- this 本质上是一个指针,是类的实例化对象在内存中的地址,对象调用方法时会通过ecx寄存器把this指针传给被调用函数,所以被调用函数可以使用对象的数据(通过this+偏移)
- 静态数据成员与类相关,在实例化对象前就已经存在。
基类的私有成员,实际上已经继承了,只是编译器的权限控制不通过这种编译,可以用this指针加偏移实现
#include <iostream>
using namespace std;
class Base {
private:
int x;
int y;
public:
Base():x(1),y(2) {}
};
class Sub: public Base {
public:
Sub() {
}
};
int main()
{
Sub b;
Base * pb = &b;
printf("%d\n", *((int*)pb+1)); //pb为this指针,指向x , pb+1 指向y;
return 0;
}
网友评论