学习C++primer心得08.5.27

本文探讨了C++中的关键字使用,如typedef、enum及const的不同应用场景,并详细解析了指针与const结合时的特性。此外,还介绍了类成员初始化的方法及头文件的设计原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

typedef 可以用来定义类型的同义词
枚举的定义包括关键字 enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员列表。
     // input is 0, output is 1, and append is 2
     enum open_modes {input, output, append};
     // shape is 1, sphere is 2, cylinder is 3, polygon is 4
     enum Forms {shape = 1, sphere, cylinder, polygon};
class TestClass{
}
定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。类不是在类定义里定义数据成员时初始化数据成员,而是通过称为构造函数(第 2.3.3 节)的特殊成员函数控制初始化。
头文件用于声明而不是用于定义.
一些 const 对象定义在头文件中
如果使用 class 关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为 private;如果使用 struct 关键字,那么这些成员都是 public。使用 class 还是 struct 关键字来定义类,仅仅影响默认的初始访问级别。
因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。
这种行为有一个很重要的含义:当我们在头文件中定义了 const 变量后,每个包含该头文件的源文件都有了自己的 const 变量,其名称和值都一样。当该 const 变量是用常量表达式初始化时,可以保证所有的变量都有相同的值。但是在实践中,大部分的编译器在编译时都会用相应的常量表达式替换这些 const 变量的任何使用。所以,在实践中不会有任何存储空间用于存储用常量表达式初始化的 const 变量。
Int *const p,指的是一个恒定的指针p,这个指针指向一个整型,所以这个指针的内容可以改变,但是它的指针值也就是p的值不能变
int ci1=9;
int ci2=15;
int *const   p   =   &ci1;
p=&ci2;//error
(*p)++;
相应的int const *p,指的是一个指向恒定整型内容的指针p,也就是说这个p的内容可以变,但是开始的p所指向的地址中的内容不能在程序当中通过p来改变。
int ci1=9;
int ci2=15;
int const*   p   =   &ci1;
p=&ci2;
(*p)++; //error
 
Zz(todototry csdn)
extern声明
关于const:
1。对于指针的讨论比较多
const   int*   p   =   &ci1;
p   =   &ci2;
这是指向一个const对象的指针,而p是个指针变量,可以指向ci1,也可以变指向的到ci2.
把const写在*之后那就是个常量指针了,p是指针常量,定义时初始化,以后再不能改变指向了
int   *   const   p   =   &i1;
p   =   &i2;   //err
二者结合的情况
const   int*   const   p   =   &ci3;
2。涉及typedef的情况
先说一种意见
定义常量可以   const   int   ci1   =   0;
可以   int   const   ci2   =   0;
typedef   char*     C;
const   C   p   =   &ch;
这个p是什么呢,是const   char*   p还是char*   const   p;
是后者,
原因:const   C   p中C是个类型,const是修饰p的                
所以基于这点,个人建议写const量定义的时候,用int   const   ci2   =   0;的形式,显式说明const是修饰ci2的
所以,
typedef   char*     C;
C   const   p   =   &ch;
设计头文件时,应使其可以多次包含在同一源文件中,这一点很重要。我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。使得头文件安全的通用做法,是使用预处理器定义头文件保护符。头文件保护符用于避免在已经见到头文件的情况下重新处理该头文件的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值