zoukankan      html  css  js  c++  java
  • 《新标准C++程序设计》1.7-1.10(C++学习笔记2)

    1、内联函数(inline关键字)
    eg.inline int Max(int a,int b)
    {
    if(a>b)
    return a;
    return b;
    }
    当编译器处理调用内联函数的语句时,直接将整个函数体的代码插入调用语句处,但是会使最终可执行程序的体积增加。(这是以空间换时间)

    2、函数的重载(使函数命名变得简单)
    (1)定义:一个或多个函数,名字相同,然而参数个数或类型不同
    (2)编译器判断形式:根据函数调用语句中实参的个数和类型来判断
    eg.
    int MAX(int a,int b);
    int MAX(double a,double b);
    double MAX(double a,double b,double c);
    注意:
    ①若是名字相同,参数个数或类型也相同,只是返回值的类型不同,这不是重载,而是重复定义
    ②若调用时,实参的类型不符合任何一个定义的函数,则直接编译出错(二义性)

    3、函数的缺省函数
    C++中,定义的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候,若相应位置不写参数,参数就是缺省值。
    eg.void func(int x1,int x2=2,int x3=3){}
    func(10);//等效于func(10,2,3)
    func(10,8);//等效于func(10,8,3)
    func(10,,8);//不等效,只能最右边连续若干个参数缺省
    函数参数可缺省的目的在于提高程序的可扩充性。
    即如果某个写好的函数要添加新的参数,而原先那些调用该函数的语句,未必需要使用新增的参数,那么为了避免对原先那些函数调用语句的修改,就可以使用缺省参数。

    4、动态内存分配
    (1)new运算符(返回值类型均为T
    ①分配一个变量
    P = new T;
    T是任意类型名,P是类型为
    T的指针。这样的语句会动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。
    ②分配一个数组
    P = new T[N];
    T是任意类型名,P是类型为*T的指针,N代表“元素个数”,可以是任何值为正整数的表达式,表达式中可以包含变量、函数调用等。这样的语句会动态分配出 N x sizeof(T)个字节的内存空间,这片空间的起始地址被赋值给P。
    (2)delete运算符(释放new运算符动态分配的存储空间)
    ①delete 指针;
    该指针必须指向new出来的空间。一片空间不能被delete多次。
    ②delete []指针;
    该指针必须指向new出来的数组。如果没有[],会导致动态分配的数组没有被完全释放。

    5、用string对象处理字符串
    (1)定义string对象
    如果不对其初始化,则其值是空串,即“”。
    一个string对象的大小是固定的,即表达式 sizeof(string)的值是固定的,与存放的字符串的长度无关。
    string对象中并不直接存放字符串,字符串会在别处开辟存储空间存放,string对象中只存放该内存空间的地址,或者再加上一些其他信息。
    (2)string对象的运算
    string对象之间可以用<、<=、==、>=、>运算符进行比较,还可以用 + 将两个string对象相加、将一个字符串常量和string对象相加、将一个字符数组和一个string对象相加,相当于进行字符串连接。+=运算符也适用于string对象。此外,string对象还可以通过[]运算符和下标存取字符串中的某个字符。

  • 相关阅读:
    THUWC 2019 第二轮 纯口胡题解
    Codeforces Round #607 (Div. 1) Solution
    Codeforces Round #606 (Div. 1) Solution
    CSP-S 2019 简要题解
    NOIP 2018 简要题解
    luogu P5605 小 A 与两位神仙
    luogu P5606 小 K 与毕业旅行
    AtCoder Grand Contest 040 简要题解
    AtCoder Grand Contest 035 简要题解
    AtCoder Grand Contest 036 简要题解
  • 原文地址:https://www.cnblogs.com/cyn522/p/12241857.html
Copyright © 2011-2022 走看看