宏定义、大小端、const、static

今日计划:看阿秀八股到35

宏定义

宏定义是比较常用的预处理指令,即使用“标识符”来表示“替换列表”中的内容。

宏定义不是语句,是预处理指令,故结尾不加分号

当替换列表一行写不下时,可以使用反斜线\作为续行符延续到下一行

#define PI 3.1416 //正确,该行#前允许有空格
int a;#define N 5 //错误,该行#前不允许有空格外的其他字符

删除宏定义的格式为:#undef 标识符 

标识符与参数表的左括号之间不能有空格,否则预处理器会把该宏理解为普通的无参宏定义

宏定义(无参宏定义和带参宏定义),C语言宏定义详解

大小端

大端存储:数据的高字节存储在低地址中,数据的低字节存储在高地址中

应用:C51是大端存储;socket编程中网络字节序一般是大端存储

小端存储:数据的高字节存储在高地址中,数据的低字节存储在低地址中

应用:x86结构、ARM和DSP都是小端存储

详解大端模式和小端模式 - 简书 (jianshu.com)

const类成员变量、const成员函数

 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。

在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。

const 修饰的成员函数指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。

常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class A
{
public:
    void f()
    {
        cout<<"non const"<<endl;
    }
    void f()const
    {
        cout<<" const"<<endl;
    }
};
 
int main(int argc,char **argv)
{
    A a;
    a.f();
    const A &b=a;
    b.f();                    //如果只有const成员函数,非const对象
    const A *c=&a;            //是可以调用const成员函数的。
    c->f();                    //当const版本和非const版本的成员函数同时出现时,
    A *const d=&a;            //非const对象调用非const成员函数。
    d->f();
    A *const e=d;
    e->f();
    const A *f=c;
    f->f();
    return 0;
}

 在C++中,只有被声明为const的成员函数才能被一个const类对象调用。

 const成员函数可以被对应的具有相同形参列表的非const成员函数重载

C++之const类成员变量,const成员函数

static类成员、static类成员函数

static类成员不像普通的类数据成员,static类数据成员独立于一切类对象处在。static类数据成员是与类关联的,但不与该类定义的对象有任何关系。static类成员不像普通的类数据成员,static类数据成员独立于一切类对象处在。static类数据成员是与类关联的,但不与该类定义的对象有任何关系。

即:static不会想普通类数据成员一样每一个类对象都有一份,全部类对象是共享一个static类成员的

static类对象必须要在类外进行初始化

所有对象共享一个static类成员

static修饰的变量先于对象存在,所以static修饰的变量要在类外初始化。因为static是所有对象共享的东西嘛,必须要比对象先存在的。

static类成员函数

由于static修饰的类成员属于类,不属于对象,因此static类成员函数是没有this指针的,this指针是指向本对象的指针。正因为没有this指针,所以static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员。

C++static类成员,static类成员函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值