C++学习笔记2

C++学习笔记2

1.Static知识点

static是一个修饰符,可以修饰变量,函数。

静态变量: 函数中的变量,类对象

静态类的成员: 类中的变量和类中的函数

  • 静态变量

对于static修饰的变量,其生命周期是整个程序的生命周期。

  • 类中的变量

类中的静态变量,所有类对象共享, 使用A::a这样在类外进行初始化,构造函数不能进行初始化

  • 类中的函数

类中的静态函数,我们一般使用A::fun这样进行调用,当然我们也可以使用类对象.这样调用。静态函数所有对象实例共享,不能访问非静态数据和函数。

2.this 知识点

(1)一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。

(2)this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。

在类中,静态成员函数不存在this指针。

const成员函数的this指针是 const A* const类型

普通成员函数的this指针是 A* const 类型

3.assert知识点

断言,是宏,而非函数。assert 宏的原型定义在 (C)、(C++)中,其作用是如果它的条件返回错误,则终止程序执行。可以通过定义 NDEBUG 来关闭 assert,但是需要在源代码的开头,include 之前。

#include <stdio.h> 
#include <assert.h> 

int main() 
{ 
    int x = 7; 
    x = 9; 
    assert(x==7); 
    return 0; 
} 

断言主要用于检查逻辑上不可能的情况。例如,它们可用于检查代码在开始运行之前所期望的状态,或者在运行完成后检查状态。与正常的错误处理不同,断言通常在运行时被禁用。

忽略断言, 在代码开头加上:

#define NDEBUG          // 加上这行,则 assert 不可用

4.union知识点

联合(union)是一种节省空间的特殊的类,一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。联合有如下特点:

  • 默认访问控制符为 public
  • 可以含有构造函数、析构函数
  • 不能含有引用类型的成员
  • 不能继承自其他类,不能作为基类
  • 不能含有虚函数
  • 匿名 union 在定义所在作用域可直接访问 union 成员
  • 匿名 union 不能包含 protected 成员或 private 成员
  • 全局匿名联合必须是静态(static)的

利用union测试主机的大小端


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值