设为首页 加入收藏

TOP

C++ Primer 详解(第二章)(三)
2017-10-13 10:22:08 】 浏览:524
Tags:Primer 详解 第二章
stexpr是否修饰成功,人工检测方法:将这个函数拿来作为数组的大小。比如int array[fn()];若没有报错则表示修饰成功。

4.constexpr在用来修饰指针的时候,这个指针要么是必须初始化为空,要么指向的对象的地址是固定不变的(static对象,全局对象);

5.并没有所谓的指向constexpr对象的指针,constexpr只能修饰指针。constexpr int *q=nullptr; q是常量指针。

2.5 处理类型

1)类型别名

1.类型别名有两种定义方法:

①:typedef double wages; // wages=double        typedef wage *p //p=double *

②using SI=double;//SI=double

2.值得注意的理解:

typedef char *pstring;

const pstring cstr=0;//注意其中cstr是一个常量指针

const pstring *ps; ps是一个指针,指向一个指向char类型对象的指针。

错误的理解:将pstring换成char *.比如  const char * cstr=0;按照这样的理解,cstr应该是一个指向常量的char类型的指针。。然而在typedef这个定义中,把char*作为一个整体取了一个类型别名pstring,在const pstring cstr=0;中,const是修饰的pstring这个整体,也就是说修饰的是指针而不是char。

2)auto类型说明符

1.auto(自动类型说明符)是通过等号右边进而推断等号左边的类型。int ci=42;   auto index=ci;//index被推断为int;

2.auto会忽略顶层const特性而保留底层const特性(想想吧,它不得不这样做,要是不保留底层const特性,那么赋值便是错误的,那为什么要忽略顶层const特性呢,这是为了保留可扩展性,然用户自己选择是否真的需要const,万一只是需要一个变量呢,而真正需要const可以看第3条)

3.若想给auto加上顶层const特性:const int ci=42;   const auto f=ci;

3)decltype 类型指示符

1.decltype(类型提取说明符)是通过表达式的返回类型而推断出类型。decltype(fon()) sum=x;(与auto不同之处,当想用这个表达式的返回值初始化这个变量的时候,用auto,只需要它的类型,而不需要这个值得时候,用decltype)。

2.decltype是类型提取,必须提取完全,因此他会保留所有的顶层和底层const特性。

3要给一个decltype修饰的变量加上const特性,const decltype(fon()) f=42;

4.值得注意的地方:int i=42,*p=&i,&r=i;

decltype(r+0) b;//因为r是一个引用类型,decltype得到的是引用类型,r+0返回的时int类型,则b是一个int类型。

decltype(*p) c;//c是一个引用。为什么:因为p为一个指针,而对这个指针解引用得到这个指针所指的变量,但是这个变量有个特性,就是可以作为表达式的左值,因此这是一个引用类型,更加详细的说明见第5条。

5.decltype((i)) e;//e是一个引用,因为对i加一个括号修饰符,decltype会把它提取为一个表达式,一个变量可以作为赋值语句的左值,这种类型和引用具有完全相同的特性,因此e被作为一个引用,

2.6自定义类型

1)编写自己的头文件

1.不管需要不需要,最好给头文件加上防止多重定义的预处理符:

①:#ifndef XXXX

      #define XXXX

      #endif

 

②:#pragram once

2.头文件一般放的东西:

1.函数的声明

2.需要在多个文件中使用的变量的声明

3.类或者结构体

4.模版

5.inline函数

6.const变量

7.类函数成员,类数据成员的声明

8.预处理命令

 

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇支持多进程读取同一个目录 下一篇java数据类型

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目