1,cin cout
- #include <iostream>
- int main()
- {
- std::cout << "Enter two numbers:" << std::endl;
- int v1, v2;
- std::cin >> v1 >> v2;
- std::cout << "The sum of " << v1 << " and " << v2
- << " is " << v1 + v2 << std::endl;
- return 0;
- }
2,引用
引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。 引用是一种复合类型,通过在变量名前添加“&”符号来定义
因为引用只是它绑定的对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上
- int ival = 1024;
- int &refVal = ival; // ok: refVal refers to ival
- int &refVal2; // error: a reference must be initialized
- int &refVal3 = 10; // error: initializer must be an object
const引用 const 引用是指向 const 对象的引用:
- const int ival = 1024;
- const int &refVal = ival; // ok: both reference and object are const
- int &ref2 = ival; // error: non const reference to a const object
引用作为函数参数和返回值的优点:点击打开链接 3,枚举
枚举的定义包括关键字 enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员列表。 默认地,第一个枚举成员赋值为 0,后面的每个枚举成员赋的值比前面的大1。 不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以也可用于需要常量表达式的任何地方。
- enum Forms {shape = 1, sphere, cylinder, polygon};
4,类
类定义以关键字 class 开始,其后是该类的名字标识符。类体位于花括号里面。花括号后面必须要跟一个分号。
- class Sales_item {
- public:
- // operations on Sales_item objects will go here
- private:
- std::string isbn;
- unsigned units_sold;
- double revenue;
- };
一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。 类不是在类定义里定义数据成员时初始化数据成员,而是通过称为构造函数的特殊成员函数控制初始化
5,命名空间using声明:
使用 using 声明可以在不需要加前缀 namespace_name:: 的情况下访问命名空间中的名字。using 声明的形式如下: using namespace::name;
- #include <iostream>
- // using declarations for names from the standard library
- using std::cin;
- using std::cout;
- using std::endl;
- int main()
- {
- cout << "Enter two numbers:" << endl;
- int v1, v2;
- cin >> v1 >> v2;
- cout << "The sum of " << v1
- << " and " << v2
- << " is " << v1 + v2 << endl;
- return 0;
- }
6,内联函数
内联函数与宏的区别在于:宏是由预处理器来对宏进行替代,没有语法检查、类型检查和安全检查;内联函数是通过编译器的控制来实现的,有语法检查、类型检查和安全检查;内联函数是真正的函数,而且在调用的地方,由编译器负责把内联函数的函数体代码块替换到内联函数被调用的地方,这一点与宏替换很相似;内联函数有参数,有返回值;由于内联函数可以像宏一样被展开,所以调用内联函数的时候,取消了函数参数压栈、出栈所带来的开销,从而减少了函数调用开销;这就是内联函数的优越于宏的地方;
内联函数的声明和内联函数的函数体的定义必须在一起;下面声明内联函数的语句是无效的:
inline int Max(int a, int b);
而下面的内联函数的定义是有效的:
inline int Max(int a, int b)
{
return ((a > b) ? a : b)
}