C++杂项记录

const

const对象只能调用const函数

const和指针

将const用于指针有两种方式。
一种是让指针指向一个常量对象,这样可以防止在使用该指针时修改所指向的值。

//指向常量的指针
int age = 18const int *pt = &age;

以上代码中pt指向了一个const int,也就是*pt的值为const,不能修改,但是可以直接修改age的值。
第二种是将指针本身声明为常量,这样可以防止指针指向的位置。

格式输出控制符

部分控制符可以单独加在常量后面表示格式,如1000000L,10000U。

控制符含义
%d十进制有符号整数
%u十进制无符号整数
%f浮点数
%s字符串
%c字符
%p指针值
%x无符号十六进制整数
%o无符号八进制整数
%g自动选择合适的方法
%ld长整型
%lfduoble型浮点数
%3d输出3位的整数,不够3位右对齐
%9.2f一共9位数,小数点占1位,小数部分占2位,整数部分占6位

范围解析运算符

范围解析运算符“::”

析构函数

析构函数:~
在每次删除所创建的对象时执行。
析构函数名称和类名完全相同,在前面加“~”,没有返回值,不能带任何参数。
有助于跳出程序前释放资源(比如关闭文件,释放内存)。

友元函数

友元函数:friend
定义在类外部,但有权访问类的所有private和protected成员。
虽然友元函数在类的定义中出现,但是并不是成员函数。
friend可以修饰类也可以修饰函数

纯虚函数

纯虚函数是在声明虚函数时被“初始化”为0的函数,声明纯虚函数的一般形式是:virtual 函数类型 函数名(参数) = 0;
“= 0”并不表示函数返回值为0,只是在形式上的作用,作为一个标志。

extern “C”

extern “C”主要作用是实现C++代码正确调用C代码。加上extern “C”后,编译器编译这部分代码时,会按照C语言进行编译。因为C++支持函数重载,所以编译器编译C++代码时,会将参数类型一起编到编译后的代码中。但是C编译的时候只会将函数名编译到编译后的代码中。

  1. extern
    extern是编程语言中的一种属性,表示变量、函数等类型的作用域属性,是一个关键字。编译器编译时extern告诉编译器它所声明的函数和变量已经在其他文件中定义,可以其他地方使用。通常在“.c”文件中声明定义变量或者函数,并在“.h”文件中使用该关键字限定变量或者函数,然后可在其他文件或者模块中用include使用,如:
//test1.c
//声明定义,定义时会为其分配空间
int i = 32;
//test1.h
//使用test.c中定义的i
extern int i;
//test2.c
//在其他文件中调用该变量
#include "test.h"
void fun(void){
    if(i > 0){
        print("test extern");
    }
}
  1. “C”
    多种编程语言会在使用时出现嵌套或者相互调用的情况。如C和C++之间就经常出现互相调用的。虽然C++是C的扩展,但是它们之间的编译器是不同的,这就产生了各自的编译器在对C和C++进行编译的时候要依据那一个作为大家都互相认可的规范或者约定。这就是“C”的出处,“C”就是这样一个约定:
  • 这种调用编译是一种超链接
  • 这种调用编译不能影响现有的编译规则
  • C++是C的拓展
    所以extern “C”中,extern表示关键字属性,在其他地方可以使用。“C”就表示了编译器的连接规范。合在一起就可以理解为在C++/C的混合编程下进行编译。
//如果使用的是C++,extern “C”有效,extern “C”中的代码使用C编译器
#ifdef __cplusplus
	extern "C" {
#endif
        ...//需要使用C编译器的编译的代码
//结束使用C编译器
#ifdef __cplusplus
    }
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值