美文网首页
C++ 类封装及底层实现

C++ 类封装及底层实现

作者: const_qiu | 来源:发表于2020-08-31 13:52 被阅读0次

类:逻辑上封装,编译上独立
在 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;
}

相关文章

  • C++ 类封装及底层实现

    类:逻辑上封装,编译上独立在 C++ 中, 结构体和类都具有构造函数、析构函数和成员函数,两者 只有 一个 区别:...

  • Spring Boot 整合 redisson 来实现分布式锁

    配置信息 配置类 Redisson 工具类 底层封装 实现类 SpringContextHolder类 contr...

  • oc对象本质

    OC代码底层实现都是c/c++,oc的类和对象都是基于c/c++的结构体实现的 1.nsobject的底层实现就是...

  • iOS OC对象总结

    OC的实现 OC的对象、类主要是基于C、C++的结构体来实现的。编写的 OC代码,底层实现其实都是C、C++代码。...

  • OC对象的本质

    一、OC对象的底层实现 Objective-C 底层是由C/C++的数据结构实现的。一个NSObject类对应C中...

  • OC对象的本质

    一、OC对象的底层实现 OC 中的代码在底层实现,使用的是 C、C++,所以要研究 OC 中的类结构,可以将 OC...

  • iOS 对象和类的本质

    前言 我们编写的OC代码,其实底层实现都是C/C++代码。所以,对象和类也都是基于C/C++的数据结构实现的。 所...

  • OC

    1.oc底层其实都是c/c++代码 oc的类主要是基于c/c++的结构体实现的 clang -rewrite-ob...

  • OC对象的本质

    ~ Objective-C代码,底层实现?Objective-C底层实现是C\C++代码,C\C++代码转换成汇编...

  • Objective-C内存结构源码解读

    我们平时编写的OC代码,底层实现其实都是C\C++代码,所以OC的对象和类主要是基于C和C++的数据结构实现的,这...

网友评论

      本文标题:C++ 类封装及底层实现

      本文链接:https://www.haomeiwen.com/subject/uxjydktx.html