栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++的引入和基本的一些概念

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++的引入和基本的一些概念

一:c和c++差异
  c: 面向过程:算法+数据结构 = 程序
  c++:面向对象:算法+数据结构 = 对象  对象+通讯机制=程序

二:const
    {
        c:const修饰的变量,在c语言里是可以被指针间接修改的

#include 

int main(int argc, char *argv[])
{ 
    const int a=5;
    int *p=&a;
    *p=9;
    printf("%dn",a);

    return 0;
} 


        c++:const修饰的变量,不能被修改

#include 

int main(int argc, char *argv[])
{ 
    const int a = 5;
    int *p = &a;

    *p = 9;

    printf("%dn", a);

    return 0;
} 

运行结果


    }
    define{
        c:使用define定义常量
        c++:一般不会使用define定义常量,而是用const
    }
    
三:
    引用{
        int a = 5;
        int &b = a;
        引用就是取别名,
        引用的作用{
            1.作为参数,新参改变就是实参改变
            2.作为返回值,返回的是变量本身而不是变量的值
        }

c:

#include 

int main(int argc, char *argv[])
{ 
    int a = 5;
    int &b = a;

    printf("a=%d b=%d &a=%p &b=%pn", a, b, &a, &b);

    return 0;
} 

运行


  报错

c++:

#include 

int main(int argc, char *argv[])
{ 
    int a = 5;
    int &b = a;
   //a和b的值和地址都一样,说明引用就是一个取别名,两个名字对应同一片空间
    printf("a=%d b=%d &a=%p &b=%pn", a, b, &a, &b);

    return 0;
} 

运行

 引用的作用:

#include 



void swap(int &a, int &b) //引用,a和b就是实参本身,所以可以改变实参的值
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int & setval(int &a)   //返回值为引用,返回的是变量本身而不是变量的值
{
    a = 15;
    return a;
}

int main(int argc, char *argv[])
{ 
    int a, b;
    a = 5;
    b = 6;
    
    swap(a, b);
    printf("a=%d b=%dn", a, b);

    setval(a) = 9;
    printf("a=%dn", a);
    return 0;
} 

 }
四: 
    函数重载
        相同的函数名,不同的参数(类型,数目,)
        行为相识,逻辑不同使用重载
        行为相同,逻辑相同应该用模板

c++:

#include 

int add(int a, int b)
{
    printf("111111n");
    return a + b;
}

int add(int a, int b, int c)
{
    printf("2222222n");
    return a + b + c;
}

double add(int a, double b)
{
    printf("33333333n");
    return a+b;
}


int main()
{
    int a = 1,b = 2,c = 3;
    double d = 4.13,e = 3.14;
    
    add(a,b);  
    add(a,b,c);
    add(a,d);

}

重载和默认参数的歧义

#include 

int add(int i, int j = 2, int k = 3);
int add(int i, int j);

int add(int i, int j, int k)
{
    return i + j + k;
}

int add(int i, int j)
{
    return i + j;
}



int main()
{
    int i = 5, j = 6;

    printf("%dn", add(i));
//add(i,j) 这里不知道是使用三个参数的还是使用两个的所有会有歧义
}


        
五:
    默认参数
        注意!!!! 默认参数只能写在函数的声明
        1.传参只能从左往右
        2.默认参数一定是从右到左
        
六:
    c NULL代表空指针,是0
    c++ nullptr代指无效指针
 

#include 

int main(int argc, char *argv[])
{ 
	//NULL代表空指针,但是可以赋值给一个整型变量这是不合理的,所以c++使用nullptr代表无效地址
    unsigned long a = NULL;

    return 0;
} 

七:
    mutable    修饰的变量可以被更改
    mutable 不能和const和static直接连用

#include 

int main(int argc, char *argv[])
{ 
   //const修饰的变量不能改变,但是c语言可以通过指针去间接改变不合理,c++不允许
    const int a = 5;
    int *p = &a;

    *p = 9;

    printf("%dn", a);

    return 0;
} 
#include 
struct demo
{
    int a;
    mutable int b;
};
int main()
{
    struct demo A ={100,102};
    A.b=90;
    printf("%d,%dn",A.b,A.a);
    return 0;
}


    
八:
    内敛函数:直接展开函数体(效率会更高)
              限制:逻辑简单的函数,不会有复杂逻辑(不能有switch,for)
                    一般不超过5行
    inline: 在函数声明的位置直接实现(一般不会有函数声明)

#include 

inline int add(int a, int b)
{

	return a+b;
}

int main()
{
	int sum = add(1,2);
	printf("sum=%dn", sum);
}

九:
    开辟空间与释放{
        c:malloc开辟, free释放   函数
        c++:new开辟(异常处理失败的情况), delete释放 运算符

#include 


int main()
{
#if 0
	int *p = (int*)malloc(sizeof(int));
	if(NULL == P)
		perror("malloc");

	*p = 5;

	free(p);
	int *a = new int;

	*a = 5;

	delete a;
#endif
    int *p = new int[5];

    p[0] = 2;

    printf("%d", p[0]);

    delete []p;

}


        
        malloc(sizeof(int)*n)
        new int[n]
        
        free(p)
        delete []p;
        
    }
十:
    作用域
    c:全局,局部
    c++:局部,全局,类域,名词空间
    namespace
        

#include 

namespace my{
	int a = 2;
}

int main()
{
	int a = 1;

    printf("%d", my::a);


十一:
    全局变量
    

#include 
int a;
int a = 5;

int main()
{
	printf("a=%dn", a);
}

c语言编译通的过

c++编译无法通过
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号