1.面向对象编程(OOP)的本质是设计并扩展自己的数据类型。
2.和C相同,C++能够以三种不同的计数方式来书写整数:基数为10、基数为8和基数为16。
#include<iostream>
int main()
{
using namespace std;
int chest = 42;
int waist = 42;
int inseam = 42;
cout<<"Monsieur cuts a striking figure!"<<endl;
cout<<"chest = "<<chest<<" (decimal for 42) "<<endl;
cout<<hex;
cout<<"waist = "<<waist<<" (hexadecimal for 42) "<<endl;
cout<<oct;
cout<<"inseam = "<<inseam<<" (octal for 42) "<<endl;
cin.get();
return 0;
}
在默认情况下,cout以十进制格式显示整数。
头文件iostream提供了控制符dec、hex和oct,分别用于指示cout以十进制、十六进制和八进制格式显示整数。
3.成员函数cout.put( )
cout.put( )的意思是,通过对象cout来使用函数put()。
4.const限定符
创建常量的通用格式:
const type name = value;
注意:如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。即常量定义必须是立即初始化,定义不初始化编译器将报错。
C风格定义常量
#define name value
5.浮点类型
C++有3种浮点类型:float,double和long double。这些类型是按它们可以表示的有效数位和允许的指数最小范围来描述的。
通常cout会删除结尾的零。调用cout.setf( )将覆盖这种行为,至少在新的实现中这样的。
ostream方法setf( )
这种调用迫使输出使用定点表示法,以便更好地了解精度,它防止程序把较大的值切换位E表示法,并使程序显示到小数点后6位。
cout.setf(ios_base::fixed, ios_base::floatfield);//fixed-point
参数ios_base::fixed和ios_base::floatfield是通过包含iostream来提供的常量。
注意:对于float,C++只保证6位有效位。
在默认情况下,浮点常量都属于double类型。
总结:
符号整型:signed char、short、int和long
无符号整型
整型:bool、char、wchar_t、符号整型和无符号整型
浮点型:float、double和long double
算数(arithmetic)类型:整型和浮点型
6.C++算数运算符
%运算符取模。两个操作数必须都是整型,将该运算符用于浮点数将导致编译错误。如果其中一个是负数,则结果的符号满足如下规则:(a/b)*b+a%b=a。
7.运算符优先级和结合性
注意:仅当两个运算符被用于同一个操作数时,优先级和结合性规则才有效。
运算符重载(operator overloading):使用相同的符号进行多种操作。
8.类型转换
1)列表初始化(list-initialization)
列表初始化不允许缩窄(narrowing),即变量的类型可能无法表示赋给它的值。
例如,不允许将浮点型转换位整型。
在不同的整型之间转换或将整型转换位浮点型可能是被允许的,条件是编译器知道目标变量能够正确地存储赋给它的值。
例如,可将long变量初始化为int值,因为long总是至少与int一样长;相反方向的转换也可能被允许,只要int变量能够存储赋给它的long变量。
const int code = 66;
int x = 66;
char c1{31325}; //narrowing,not allowed
char c2 = {66}; //allowed because char can hold 66
char c3{code}; //ditto
char c4 = {x}; //not allowed,x is not constant
x = 31325;
char c5 = x; //allowed by this form of initialization
2)表达式中的转换
在计算表达式时,C++将bool、char、unsigned char、signed char和short值转换为int。(整数提升,intergral promotion)
3)强制类型转换
强制转换的通用格式:
(typeName) value //来自C语言
typeName (value) //纯粹的C++
static_cast<>可用于将值从一种数值类型转换为另一种数值类型(比传统强制类型转换更严格)。