关于宏定义#define

1.今天的宏#define

1-1 宏定义

      - 用来防止头文件相互调用包含:
      '''
      #ifndef  _TEST_MACRO   //if not define
      #define _TEST_MACRO   //define
      '''
      #endif
      '''
      -  有参宏     '#define 宏名 参数'
      例如 
      '''
      #define _CAN_OPEN_FIRST 0
      #define _CAN_OPEN_SECOND 1
       int main{
       std::cout<<_CAN_OPEN_FIRST;//显示1
       }
      '''
      同样 他还可以表示数据类型,如
      '''
      #define MM struct Student
      struct Student{
      int a;
      }
      MM stu = {1};
      std::cout<<stu.a;
      '''

    宏定义还可以做运算和宏嵌套,不过多列举

1-2 宏定义#define和typedef的区别呢

    #define只是单纯的替换文本
    typedef 则重命名了整个类型

    '''
    #define _INT1 int*
    typedef int* _INT2

    _INT1 a1,b1;    //定义了一个int*类型的a1,和int型的b1
    _INT2 c1,d1;
   
    b1 = &M;  //NOTOK
    d1 = &N;  //OK
    '''
    
    https://blog.csdn.net/yanggangclcsdn/article/details/49704089

1-3 另一个防止重复引用头文件的方法

   '#pragma once'  两种可以一起用,但是这种兼容性不太好,比较新

1-4 #ifdef 判断某个宏是否被定义,如果被定义,执行一下操作

2 关于类的析构函数为什么会是虚函数

 ‘class cStudent{
 public:
        cStudent();
        virtual ~cStudent();
 }’
 什么情况下使用呢? **当此类有可能是父类时**
 原因是:  ** 当我们new一个子类时,使用基类指针指向该子类对象,释放基类指针时可以释放子类空间,防止内存泄漏**
 为什么默认析构函数不是虚函数呢? 因为使用虚函数会占用额外内存,所以除了可能被作为父类的类需要手动虚函数析构函数,默认不是虚函数
 
 https://blog.csdn.net/y601500359/article/details/105297815/

3 const可以修饰是变量 指针 数组 函数参数,被其修饰的项具有只读属性不能被修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值