const常量,之前已经说过了可以查看学习笔记(二十一)。
volatile,用于告诉编译器不需优化此变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。往往会用于多线程的修饰。
restrict,用于修饰指针,使这一指针成为唯一一种访问它所指向的对象的方式。
explicit,防止类构造函数的隐式自动转换。
#include <iostream>
using namespace std;
class Test1 {
//定义共有成员,一个类的公有成员可以在任何地方被访问
public:
Test1(int a) {
num = a;
cout << num << '\n';
};//普通构造函数
// 定义私有成员,不论是成员变量还是成员函数,都仅在这个类的成员函数内部可以使用
private:
int num = 0;
};
class Test2 {
public:
explicit Test2(int b)
{
num = b;
cout << num << '\n';
};//explicit(显式)构造函数
private:
int num = 0;
};
int explicites()
{
//隐式调用其构造函数,成功
//普通构造函数可以被隐式调用,而显示构造函数只能被显式调用
Test1 t1 = 12;
//显式调用其构造函数,成功
Test1 t2(12);
//编译错误,不能隐式调用其构造函数
//Test2 t2 = 10;
//显式调用成功
Test2 t3(10);
return 0;
}