栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++笔记(二)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++笔记(二)

二、面向对象 2.1、类
  • 使用struct、class来定义类
  • struct和class的区别(唯一区别):struct默认成员变量权限是public,class默认是private;
void test(){};
struct Person{
    int age;
    void (*run)() = test;    //过去的C为了在结构体中使用函数,定义函数指针
}
struct Person{    //不推荐
    int age;
    void run(){
        cout<<"run()->"<
class Person{     //推荐使用class
    int age;
    void run(){
        cout<<"run()->"<
  • 类对象、以及指向对象的类指针的内存都是在函数的栈空间,自动分配和回收的;
2.2、this
  • 内存布局:
  1. 栈区:自动分配回收;创建对象、调用函数会自动分配一段连续栈空间;
  2. 堆区:需要主动去申请和释放;
  3. 代码区:用于存放代码;
  4. 全局区:用于存放全局变量;
  • this指针存储了函数调用者的地址,this指针指向了函数调用者;
  • 如何用指针间接访问所指向对象的成员变量
  1. 从指针中取出对象象地址值;
  2. 用对象地址值+成员变量偏移量计算出成员变量地址;
  3. 根据成员变量的地址访问成员变量的存储空间
2.3、0xcccccccc

0xcccccccc---->int3:起到断点的作用

初始栈空间填充0xcccccccc,防止函数误跳转到该处执行,如果跳转到该处则会发生中断;

2.4、封装

set、get

2.5、内存空间布局
  • 内存布局:
  1. 栈区:自动分配回收;创建对象、调用函数会自动分配一段连续栈空间;
  2. 堆区:需要主动去申请和释放;
  3. 代码区:用于存放代码;
  4. 全局区:用于存放全局变量;程序运行期间一直存在;
  • malloc、free
void test(){
      int *p=(int*)malloc(4);
      *p=4;
      free(p);
}
  • new、delete
void test(){
      int *p=new int;
      *p=4;
      delete p;
}
void test1(){
      int *p=new int[4];
      *p=4;
      delete[] p;
}

申请堆空间成功后,会返回那一段内存空间的地址

  • 堆空间初始化
void test(){
    int size=sizeof(int)*10;
    int *p=(int*)malloc(size);
    //将p地址开始的连续40个字节的每一个字节都设置为1
    memset(p,1,size);
    free(p);
}
int *p=new int;      //可能未初始化,不同平台不一样
int *p=new int();    //初始化为0
int *p=new int(5);     //初始化为5
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号