码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习笔记-2.C++的初步知识

时间:2015-03-28 22:59:10      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

一、最简单的C++程序

1.标准C++要求main函数必须声明为int型,如果程序正常执行,则向操作系统返回数值0,否则返回数值-1

2.在C语言中所有的头文件都带后缀.h,而按C++标准要求,由系统提供的头文件不带后缀.h,由用户自己编制的头文件可以有后缀.h,在C++程序中也可以使用C语言编译系统提供的带后缀.h的头文件

3.C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要使用C++标准库中的有关内容,就需要使用using namespace std;作声明

二、C++对C的扩充

1.C++的输入输出

流名 含义 隐含设备
cin 标准输入 键盘
cout 标准输出 屏幕
cerr 标准出错输出 屏幕
clog cerr的缓冲形式 屏幕

注:C语言要求变量的声明部分必须在执行语句之前,而C++允许对变量的声明放在程序的任何位置(但必须在使用该变量之前)

2.在C语言中常用#define指令来定义符号常量

   C++提供了用const定义常变量的方法,例:const float PI = 3.14

   区别:用const定义的常变量具有变量的属性,有数据类型,占用存储单元,有地址

3.函数原型声明:在C++中,如果函数调用的位置在函数定义之前,则要求在函数调用之前必须对所调用的函数作函数原型声明

4.函数的重载:C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不相同,这些同名的函数用来实现不同的功能

   注意:不允许参数个数和类型都相同而只有返回值类型不同

5.函数模板:适用于函数的参数个数相1同而类型不同,且函数体相同的情况

   格式:template <typename T> 或 template <class T>

   例:

template <typename T>
T max(T a, T b, T c)
{
    if(b > a)
        a = b;
    if(c > a)
        a = c;
    return a;
}

6.有默认参数的函数

   例:float volume(float h, float r = 12.5);

         函数调用:volume(45.6); 或 volume(34.2, 10.4);

         注:(1)实参与形参的结合是从左至右顺序进行的,因此指定默认值的参数必须放在形参表列中的最右端

               (2)若需要指定默认值,则应在调用函数之前指定,且为避免混淆,最好只在函数声明时指定默认值

               (3)一个函数不能既作为重载函数,又作为有默认参数的函数

7.变量的引用

   格式:typename &refName = varName;

   说明:(1)对变量声明一个引用,并不另开辟内存单元;在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量

            (2)在声明一个变量的引用后,在本函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名,即 int &b = a1; int &b = a2; 是错误的

            (3)引用与其所代表的变量共享同一内存单元,系统并不为引用另外分配存储空间,实际上,编译系统使引用和其代表的变量具有相同的地址,即有 sizeof(a) = sizeof(b)

            (4)对引用的初始化,可以用一个变量名,也可以用另一个引用

   用途:(1)将引用作为函数参数:将变量名作为实参时传给形参的是变量的值,在执行函数期间形参值发生变化并不传回给实参

           例:

#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}
int main()
{
    int i = 3, j = 5;
    swap(i, j);
    cout << "i = " << i << " j = " << j << endl;
    return 0;
}

   注意:(1)不能建立void类型的引用

            (2)不能建立引用的数组,因为数组名只代表数组首元素的地址,本身不占有存储空间

            (3)可以将变量的引用的地址赋给一个指针,此时指针指向原来的变量

            (4)可以建立指针变量的引用

                 例:int i = 5; int *p = &i; int* &pt = p; cout << *pt; 此时输出5

            (5)可以用const对引用加以限定,不允许改变该引用的值,但是它并不阻止改变引用所代表的变量的值

                这一特征常用于作函数的形参,来保护形参的值不被改变

            (6)可以用常量或表达式对引用进行初始化,但此时必须用const作声明

                此时编译器处理方式:生成一个临时变量,用来存放该表达式的值,引用是该变量别名

8.内置函数:在编译时将所调用的函数的代码嵌入到主调函数中,又称内联函数

                  一般对规模很小且使用频繁的函数使用,以大大提高运行速度

   例:

inline int max(int a, int b, int c)
{
    if(b > a)
        a = b;
    if(c > a)
        a = c;
    return a;
}

9.作用域运算符:C++提供作用域运算符 :: ,它能指定所需要的作用域

   例:

#include "iostream"
using namespace std;
float a = 1;
int main(int argc, char const *argv[])
{
    int a = 2;
    cout << a << "\t" << ::a << endl;
    return 0;
}

   此时输出: 2    1

10.字符串变量

     C++标准库中声明了一个字符串类,在使用string类功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即 #include <string>

    (1)对字符串变量的赋值:

         例:string str, tmp = “China”;

               str = “Canada”; 或 str = tmp;

         在定义字符串变量不需指定长度,它的长度随其中的字符串长度而改变,且不存储末尾的\0

    (2)字符串变量的输入输出:cout << string1;    cin >> string2;

    (3)字符串变量的运算:复制直接用等号,字符串连接用加号,字符串比较直接用关系运算符

         例:str = string1 + string2;

    (4)字符串数组:并不要求每个字符串元素具有相同的长度

11.动态分配/撤销内存的运算符 new 和 delete

     注意:如果由于内存不足等原因而无法正常分配空间,new会返回一个空指针NULL

              new 和 delete 是运算符,不是函数,new要和delete配合使用

C++学习笔记-2.C++的初步知识

标签:

原文地址:http://www.cnblogs.com/trj14/p/4374883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!