C++ Primer 第二章

来源:互联网 发布:访客营销效果数据 编辑:程序博客网 时间:2024/05/16 13:04

//////////////////////////////////////////////////////////////////////////
//2.1
//2009-5-20
//
//C++标准库
//标准库类型 string vector
/*
C++标准规定了每个算术类型的最小存储空间,但它并不阻止编译器使用更大的存储空间。
表2-1 C++算术类型
bool  布尔型 -
char  字符型 8位
wchar_t 宽字符型 16位
short 短整型 16位
int 整型 16位
long 长整型 32位
float 单精度浮点型 6位有效数字
double 双精度浮点型 10位有效数字
long double  扩展精度浮点型 10位有效数字
*/
/*
表示整数、字符和布尔值的算术类型合称为整型(integral type)
char 类型通常是单个机器字节(byte)
wchar_t 类型用于扩展字符集,比如汉字和日语。

short、int和long类型都表示整型值,存储空间的大小不同
short 类型为半个机器字长
int 类型为一个机器字长
long 类型为一个或两个机器字长(在32位机器上int类型和long类型通常字长是相同的)

bool 类型表示真值true和false。0值算术类型代表false,任何非0值都代表true


求模!

*/
/*
float 一个字
double 两个字
long double  三个或四个字
*/

//程序中选择 int  double

//////////////////////////////////////////////////////////////////////////
//2.2
//2009-5-20
//
/*
#include <iostream>
void main()
{
 std::cout << "a multi-line "
  "string literal "
  "using concatenation"
  << std::endl;

 std::cout << "a multi-line /
  string literal /
  using concatenation"
  << std::endl; // ‘/’后面不能有空格或注释

 std::cout << -10e-2 << std::endl;

 int ival(1024); //复制初始化
 int jval = 1024;//直接初始化

 int mouth = 01;
 std::cout << mouth << std::endl;
}
*/
//////////////////////////////////////////////////////////////////////////
//2.3
//2009-5-22
//
/*
#include <iostream>
#include <string>
extern double pi = 3.14159; //这是定义,不是声明
int a = 10;
void main()
{
 //C++关键字 2.3.2 auto
 std::string titleA = "C++ Primer, 4th Ed.";
 std::string titleB("C++ Primer, 4th Ed.");
 std::string all_nines(10,'9');
 //2.3.3  2 有多个初始化式时不能使用复制妆始化?????
 int input_value;
 std::cin >> input_value;
 //2.3.4 内置类型变量,在函数体外定义都初始化成0,在函数体里定义不进行自动初始化。
 //大多数类都提供默认构造函数,如string类定义默认构造函数来初始化string变量为空字符串。
 std::string empty; //empty = "";
 //有些类类型没有默认构造函数。对于这结类型来说,每个定义都必须提供显式的初始化式。
 //2.3.5
 //变量的定义用于为变量分配存储空间,还可为变量指定初始值.在一个程序中,变量有且仅有一个定义.
 //声明用于向程序表明变量的类型和名字.定义也是声明:当定义变量时我们声明了它的类型和名字.
 //可以通过使用extern关键字声明变量名而不定义它。
 extern double pi;
 //extern double x = 3; 这句初当作是定义,但必须在函数体外;
 extern std::string name;

 //2.3.6
 //定义在函数外部的名字具有全局作用域 global scope
 //在函数体中都可访问的变量有局部作用域 local scope
 //在for语句中的变量,具有语句作用域 statement scope
 //局部变量与全局变量同名,局部变量屏蔽全局变量
 std::cout << a << std::endl;
 for(int a = 1; a < 10; a++)
  std::cout << a;
 
 //2.3.7
 
}
*/
//////////////////////////////////////////////////////////////////////////
//2.4 const
//2009-5-22
//
/*
void main()
{
 const int bufSize = 512;
 for(int index = 0; index != bufSize; ++index)
 {
  
 }
 //const对象默认为文件的局部变量
 //非const变量默认为extern.
}*/
//////////////////////////////////////////////////////////////////////////
//2.5 引用
//2009-5-22
//
/*
#include <iostream>
void main()
{
 int ival = 1024;
 int jval = 2048;

 int &refVal = ival; //refVal相当于ival的别名
 
 refVal = jval; //相当于 ival = jval;

 std::cout << refVal << std::endl;
 std::cout << ival;

 //const 引用
 const int i = 1024;
 const int &ref = i;
 
 //
 int j = 42;
 const int &r = 42;
 const int &r2 = r + i;

 double dval = 3.14; 
 const int &ri = dval; //int temp = dval;const int &ri = temp;
 
 int ri1 = ri;
 
}
*/
//////////////////////////////////////////////////////////////////////////
//2.6 typedef 2.7 枚举
//2009-5-22
//
/*
enum Points{point2d = 2, point2w, point3d = 3, point3w};
void main()

 Points pt3d = point3d;
}
*/
//////////////////////////////////////////////////////////////////////////
//2.8 类类型
//2009-5-22
//

class Sales_item{
public:
 //operations on Sales_item object will go here
private:
 std::string isbn;
 unsigned units_sold;
 double revenue;
 //定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。
 //当定义数据成员时,只能指定该数据成员的名字和类型。
 //类不是在类定义数据成员时初始化数据成员,而是通过构造函数的特殊成员函数控制初始化。

 
 
};

struct Sales_item{

 // no need for public label, members are public by default
private:
 std::string isbn;
 unsigned units_sold;
 double revenue;

}

原创粉丝点击