第一部分 预备知识
第二章 C++语法和语义基础
问题2.1 本章的目的是什么?
答:介绍C++基本的语法和语义。
本章对C++的语法和语义提供了简短的概述,涵盖了大部分的概念,包括了:main()函数的作用,创建和使用局部对象、动态对象以及静态对象,通过传值、传引用和传地址的方式传递C++对象,默认参数列表,C++的输入输出流,类的操作符重载,模板的使用,使用auto_ptr(智能指针)防止内存泄露,异常处理,类的成员函数、const成员函数、构造函数、初始化列表、析构函、继承、is-a的转化和动态绑定等等.
有经验的C++程序员可以跳过本章。
问题2.2 main()函数的要点是什么?
答:它是应用程序的重要函数之一。
面向对象的C++程序几乎全是由类组成的,但是,至少会存在一个c语言风格的函数main()。mian()在程序开始执行的时候被调用,当main()函数结束的时候,操作系统会中止程序的运行。main()函数总是返回int类型,类似于下面的形式:
int main()
{
// ...
}
main()函数有一个特性:在结束的时候,默认会返回 “0;”。因此就算程序在main()函数的结尾处出现流程上的错误,main()函数仍能将0返回给操作系统。大多数的操作系统会把main()的返回值0作为程序正常结束的标志。
main()函数是唯一具有隐含在结束时返回0的函数。其他的函数必须使用显式的语句来返回适当的整型值。
本节中的例子中main()函数是不带任何参数的,然而,向C语言中一样,为了能够处理程序的命令行,main()函数的参数是可选的。
问题2.3 Funtions的要点是什么?
答:Functions就是函数,它是一种将软件分解成更小的、可管理的小块的重要方法。Functions可以有返回值(例如:函数通过计算得到了一个值并将这个值返回)、也可以没有返回值。对于不返回值的Functions,它的返回值类型是void,它们通常被叫做procedure(过程)。
在下面的例子中,函数f()没有参数和返回值(即它的返回值是void),函数g()带有两个整型参数和一个浮点型的返回值。
void f()
{
// ...
}
float g(int x, int y)
{
float sum = x + y;
float avg = sum / 2.0;
return avg;
}
int main()
{
f();
float z = g(2, 3);
}
问题2.4 默认参数的要点是什么?
答:C++允许函数带有默认参数。当函数的调用者不给函数提供输入参数的时候,默认参数将提供给函数指定的默认值。例如下面的例子:如果调用者不给函数f()提供输入参数的话,整数42将作为默认参数传递给函数f()。既然如此,函数的默认参数有可能使调用者的代码看起来更简练。
void f(int x=42); <-- 1
void f(int x) <-- 2
{
//...
}
int main()
{
f(29); <-- 3
f(); <-- 4
}
(1) 在函数的声明中声明默认参数
(2) 在函数定义的时候,不能重复声明默认参数
(3) 传递整数29给函数f()
(4) 传递整数42给函数f()