首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ 入门基础

在使用 C语言 ,我们自己定义名字可能和库函数冲突,或者在同一个项目组,多人定义名字起冲突 此时我们只有改名字这一条路可选,显然祖师爷本贾尼对于这种方法很不满, 于是他想出来这种解决方法 通过不同命名空间...注意: 命名空间支持嵌套使用 如果出现同名命名空间,编译器会将其合并,可能会引起冲突 命名空间是在编译查找启用 ---- 缺省参数 祖师爷在 C++ 设计了缺省参数这个概念,使得函数在没有参数传递也可以按其他方式运行...,可以不参数 return 0; } 缺省参数出现使得函数运行多了一种可能,实际运用场景如:在 栈 初始化时,设定缺省参数值为4,即默认大小为4,假若用户不参数,则按4来初始化 栈 大小;...test(); //此时必须一个参数,因为参数 a 不是缺省参数 test(1,2,3,4); //参数多了 3、声明和定义不能同时出现缺省参数,只能在声明中出现 //test.h //声明时缺省...,且被频繁调用函数 内联函数不建议声明和定义分开,因为内联函数不进入符号表,因此可能产生链接错误,推荐在声明时就顺便函数定义,头文件展开内联函数一起包含 ---- auto关键字 这个是 C

16510

C++初阶】类和对象修炼上

这一专题是C++学习者第一道小坎,我分为上中下三节给大家讲解 类和对象上:类和对象引入,包括一些细碎知识点,包括面向对象思想,类实例化,this指针等 类和对象:类和对象六大默认成员函数中最常用...ps: 声明和定义分离:方便浏览类结构 域作用限定符限定:防止命名冲突 缺省值声明和定义只在声明写 6.封装 C++三大特性:封装,继承,多态 但是C++并不只是有这几个特性,毕竟四大名著实际上有很多名著...0,这里为了避免空类实例化出来了对象,对象在取地址出现都为空,(在内存没有开辟空间却定义出了变量尴尬问题),所以C++编译器给空类和空类实例化出对象都给与了一个字节空间大小. 9.隐含this...this指针特性: this指针类型:类类型* const,即成员函数,不能给this指针赋值。...只能在“成员函数内部使用 this指针本质上是“成员函数形参,当对象调用成员函数,将对象地址作为实参传递给 this形参。所以对象不存储this指针。

66640
您找到你想要的搜索结果了吗?
是的
没有找到

C++入门

一个中大型项目往往由多名程序员共同开发,会使用大量变量和函数......,不可避免地会出现变量或函数命名冲突。当所有人代码都测试通过,没有问题,将它们结合到一起就有可能会出现命名冲突。...= 20){cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;}半缺省参数必须从右往左依次来给出,不能间隔着给,否则在<em>传</em>参<em>时</em>存在歧义缺省参数不能在<em>函数</em>声明和定义<em>中</em>同时<em>出现</em>...// <em>错误</em>示例:auto ret(auto a)//此处代码编译失败,auto不能作为形参<em>类型</em>,因为编译器无法对a<em>的</em>实际<em>类型</em>进行推导{ return a;}==注意:==auto不能用来直接声明<em>数组</em>...:// <em>错误</em>示例:void TestAuto(){auto b[] = {4,5,6};// <em>错误</em>用法}基于范围<em>的</em>for循环在C++98<em>中</em>如果要遍历一个<em>数组</em>,可以按照以下方式进行 :#include <...,<em>将</em><em>数组</em><em>中</em>遍历的当前元素拷贝到了声明<em>的</em>变量 value <em>中</em>,因此无法对<em>数组</em><em>中</em><em>的</em>元素进行修改操作,如果需要在遍历过程<em>中</em>修改元素<em>的</em>值,需要使用引用。

16520

C++初阶-入门基础语法

二、namespacem命名空间 ---- 概念: 在C/C++变量、函数和类名称都大量存在于全局作用域中,可能会导致命名冲突 使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或名字污染...(函数参数类型,个数,顺序三者满足其中之一即可) 错误示例: 名字修饰 C/C++能否支持重载在于其能否在链接成功找到对应函数地址,而这又关乎函数名字修饰规则 注:关于程序如何生成知识有问题的话...符号表找Add地址,然后链接到一起 链接,面对Add函数,连接器会根据编译器自己函数名修饰规则去找对应出现函数,而C/C++命名修饰是不同 示例:使用gcc演示修饰后函数名字 采用C...,在链接对应函数地址则会有歧义,无法链接成功,也就无法支持函数重载 采用C++编译器编译后结果 说明:在linux下,采用g++编译完成后,函数名字修饰发生改变,编译器函数参数类型信息根据规则添加到修改后名字...迭代对象要实现++和==操作(现在只做了解) 十、指针空值nullptr ---- C++98指针空值 声明一个变量最好给该变量一个合适初始值,否则可能会出现不可预料错误 指针没有合法指向初始化

67320

C++C++入门必备知识详细讲解

一、命名空间 1. namespace 在C/C++,变量、函数等等都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。...使用命名空间目的是对标识符名称进行本地化,以避免命名冲突,namespace 关键字出现就是针对这种问题。...;,就使用指定实参,如下图: 当然也可以只一部分参数,但是当出现多个参数,参数必须从右往左依次来给出,不能间隔着给;例如: #include using namespace...,是函数名,所以在C语言中,重名函数名在编译过程中会有冲突,编译不通过; 但是,在C++函数名修饰规则C++不是用函数名汇总在一起,而是有它自己修饰规则,具体修饰规则在不同编译器有不同修饰规则...,认为它就会直接展开,所以在编译阶段没有给它一个有效地址,也就没有进入符号表;而在 main 函数调用了 Add 函数,它在符号表并没有找到自己对应函数地址,所以会出现链接错误

9610

【C→C++】打开C++世界大门

那命名空间就是我们大佬为C语言补第一个坑: 在C/C++,变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。 什么意思呢?...5.2 C++支持函数重载原理–名字修饰 首先大家思考一个问题: 我们上面提到C++出现函数重载情况时候,我们去调用时程序会根据我们参数类型去匹配对应函数。...而C语言是不会进行这样处理,因为C语言不允许函数重载,即C程序不会出现同名函数,所以C语言可以直接通过函数名去匹配对应函数,一旦出现同名函数,那这时就发生冲突了,就报错了。...6.5 值、引用效率比较 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,与引用相比...指针空值nullptr(C++11) 在良好C/C++编程习惯,声明一个变量最好给该变量一个合适初始值,否则可能会出现不可预料错误,比如未初始化指针。

13610

C++入门

变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。...,这是因为: C语言没办法解决类似这样命名冲突问题 而这里我们自己定义变量“rand”就和函数名有冲突,就会报出“重定义”编译错误提示 而这里我们C++就给出了很好解决办法:命名空间!...using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名类型/对象/函数,就存在冲突问题。该问题在日常练习很少出现,但是项目开发中代码较多、规模大,就很容易出现。...值、引用效率比较 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下...下面这种情况就是内联函数声明和定义分离,导致没有函数地址 他inline放在了函数头文件声明,然后定义放在了cpp文件,于是乎产生了连接错误 #include using

8210

C++修炼之路】1. 初窥门径

命名空间 在C/C++,变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。...,对于这个例子,我们看不是返回值类型,而是括号内部参数类型,由于参数类型不同,我们就可以依据调用时类型来判断是哪个函数在调用。...采用C++编译器编译后结果 结论:在linux下,采用g++编译完成后,函数名字修饰发生改变,编译器函数参数类型信息添加到修改后名字。...5.6 值、引用效率比较 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下...指针空值nullptr(C++11) 9.1 C++98指针空值 在良好C/C++编程习惯,声明一个变量最好给该变量一个合适初始值,否则可能会出现不可预料错误,比如未初始化指针。

99300

C++C++入门基础

我们c++祖师爷本贾尼博士正是发现了c语言这个缺陷,引入了命名空间这个概念,命名空间包括区域变成了一块新域,避免了不同程序员变量或者是函数冲突问题!!...该问题在日常练习很少出现(因为代码不多,如果我们和库冲突了可以妥协一下),但是项目开发中代码较多、规模大,就很容易出现。...g++函数修饰后变成【_Z+函数长度+函数名+类型首字母】 也就是说在c++,我们参数信息添加到函数,参数不同,修饰出来名字就不同,所以参数个数 或 类型类型顺序 不同情况下编译器是可以区分...注意:以下代码就有问题,因为for范围不确定(数组是不会整个数组过去) void TestFor(int array[]) { for(auto& e : array) cout<< e <...<endl; } 十三、指针空值nullptr 在良好C/C++编程习惯,声明一个变量最好给该变量一个合适初始值,否则可能会出现不可预料错误,比如未初始化指针。

16210

C++C++基础语法

---- 二、命名空间 1.由来      当我们定义一个变量,会不会偶尔和库里面的函数名字相同??      当我们协同完成一个项目,你定义变量会不会与其他人定义变量名冲突???      ...“函数” 这个例子就是 rand于库函数rand函数重名,导致重定义 C语言没办法解决类似这样命名冲突问题,所以C++提出了namespace来解决 ---- 2.定义  1.定义和初步了解...在test.cpp,调用那他们,会在预处理阶段,头文件展开,会直接合并命名空间名相同命名空间!...,当参数类型不同时候,我们需要再去写一个函数,而且还不能同名,如果重名,编译器不会通过,但如果在C++,就可以使用,这叫做 函数重载。...{ for ( auto & e : array ) cout << e << endl ; } 这里array只是地址,因为数组,只能将其首元素就是地址传来

1.3K20

函数

函数定义 下面我们看一看在Python函数定义基本形式: def 函数名(参数列表): # 代码块 return 返回值 下面我们看一个简单实例,计算两个数和...,计算和") # 调用函数 c = sum(1 ,2) print(c) 在调用时,参数会根据顺序与函数定义参数顺序匹配起来,在本例a=1, b=2 乘法表示例...在Python函数参数传递,可以传入不可变或可变类参数。 不可变类型:类似C/C++值参数。...可变类型:类似C/C++引用参数(即地址方式) 因为在Python中一切皆为对象,所以在Python严格来讲我们不能跟在C/C++中一样说是值传递或引用传递,应该讲不可变对象或可变对象。...,求和实例: (1, 9, 10, 2, 2, 39, 0, 11, 20) 和为: 94 字符串传递 下面我们多个字符串传递给函数进行字符串连接操作: # -*- coding:utf-8 -*-

4.3K60

C++】——入门基础知识超详解

命名空间 在C/C++,变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。...使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题。...而C语言无法支持重载,因为同名函数无法区分。 结论 C语言不支持函数重载,因为同名函数无法区分。 C++支持函数重载,通过名字修饰技术参数类型信息添加到函数,使得同名函数可以区分。...6.5 值、引用效率比较 函数会传递实参一份拷贝,这在处理大数据时效率低。引用则直接操作实参,提高效率。...arr[10]; // 错误,不能直接用 auto 声明数组 3.为了避免与 C++98 auto 混淆,C++11 只保留了 auto 作为类型指示符用法 4.auto 最常见优势用法是与

7410

一文掌握C++基本语法

C++关键字 2. 命名空间 变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存在于全局作用域中,可能会导致很多冲突。...使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题。...缺省参数不能在函数声明和定义同时出现,且应只出现于声明 3. 缺省值必须是常量或者全局变量 5....在下面double赋给int别名过程,编译器会产生“临时变量”,double d整数部分赋给临时变量, 这个临时变量再将这个整数赋给另一个int类型临时变量,最后int把临时变量赋给rd,也就是说...另外引用作返回值也会提高效率 6.5 值、引用效率比较 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型

66410

指针

b) C++数组名解释为数组第0个元素地址。 c) 数组第0个元素地址和数组首地址取值是相同。 d)数组第n个元素地址是:数组首地址 + n。...4)数组名不一定会被解释为地址 在多数情况下,C++ 数组名解释为数组第0个元素地址,但是,sizeof运算符用于数据名返回整个数组占用内存空间字节数。...,只能数组地址,并且必须把数组长度也进去,除非数组中有最后一个元素标志。.../正确 int * p = bh; //错误 3) 把二维数组递给函数 如果要把bh传递给函数函数声明如下: void func(int (*p)[3],int len); void func...如果把函数地址作为参数传递给函数,就可以再函数灵活调用其它函数

14900

C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

前言 命名空间 如上图,当我们没包stdlib.h头文件,可以正常打印。但如果包了该头文件,就会发生错误。 上面的错误称为命名冲突。...使用C++输入输出更方便,不需要像printf/scanf输入输出那样,需要手动控制格式。 C++输入输出可以自动识别变量类型。...using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名类型/对 象/函数,就存在冲突问题。...没有,使用参数默认值。,使用指定实参。注意:,必须从左往右参,不能间隔参。...:是函数一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数形参列表(参数个数 或 类型类型顺序)不同,常用来处理实现功能类似数据类型 不同问题。

11210

C++C++入门

为了防止命名冲突产生,C++规定了命名空间出现,这可以很好解决问题,我们可以把我们想定义东西都放到我们自己定义命名空间里面去,这样就不会产生命名冲突问题了。...四、函数重载(一个名字多个函数) 1.函数重载类型 C++允许在一个域中同时出现几个功能类似的同名函数,这些函数常用来处理实现功能类似数据类型不同问题。...数组偶数全部扩大二倍。...函数体较长,编译器不会展开是因为代码膨胀,假设函数指令有30行,程序内联函数调用地方有10000处,一旦编译器展开函数体,程序就会瞬间出现30w行指令,这会疯狂增加可执行程序文件大小,也就是安装包大小...p2是个指针,因为它看到*存在了,所以它认为const修饰是p2指向内容,不是p2本身 出现分析问题错误原因,其实就是我们思考是替换之后结果,编译器在分析语法,只会看到代码本身,根本不存在替换不替换这么一说

2.8K30

从基础入门到学穿C++(C++语法基础篇)【超详细】【一站式速通】

使用C++输入输出更方便,不需要像printf/scanf输入输出那样,需要手动控制格式。C++输入输出可以自动识别变量类型。...namespace关键字 namespace作用 使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题。...<< endl; return 0; } 上述代码表明,编译器会将cout解释为你定义变量,而不是标准库对象,从而导致编译错误。...list.o test.o 4、链接:两个目标文件链接到一起 两者不同原因是在进行链接过程。...而在g++环境编译,添加了函数名修饰功能,比如说一个函数void Test(int a , double x),其函数名在调用时,被修饰成了,由此我们可以理解,为什么C++语法支持函数重载

26910

C语言和C++区别是什么?8个点通俗易懂告诉你

++原文件名后缀为.cpp 如果在创建源文件什么都不给,默认是.cpp 3.返回值不同 C语言中,如果一个函数没有指定返回值类型,默认为int类型,并返回一个随机数,一般为0XCCCCCCCC 在C+...+,如果函数没有返回值则必须指定为void型,否则编译不能通过 4、参数列表 在C语言中,函数没有指定参数列表,默认可接收任意多个参数 在C++,有严格参数类型检测,没有参数列表函数,默认为...注意: 带缺省值参数必须放在参数列表最后面。因为参是从右向左。 缺省参数不能同时在函数声明和定义中出现,只能二者留其一。 缺省值必须是常量或者全局变量。 C语言并不支持缺省。...C/C++ 6、指针和引用 C语言中函数参方式有两种:值和址 以值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参值传递给新分配临时形参。...7、命名空间 在C++,变量、函数和类都是大量存在,这些变量、函数和类名称都存在于全局命名空间中,会导致很多冲突,使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或者名字污染,namespace

1.1K50

C++】——入门基础知识

命名空间 在C/C++,变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称都存 在于全局作用域中,可能会导致很多冲突。...使用命名空间目的是对标识符名称进行本地化, 以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题。...采用C++编译器编译后结果 结论:在linux下,采用g++编译完成后,函数名字修饰发生改变,编译器函数参 数类型信息添加到修改后名字。...6.5 值、引用效率比较 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直 接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,...指针空值---nullptr(C++11) 10.1 C++98指针空值 在良好C/C++编程习惯,声明一个变量最好给该变量一个合适初始值,否则可能会出现 不可预料错误,比如未初始化指针

8910

C++基础知识概述

+,变量、函数和类都是大量存在,这些变量,函数和类名称都存在于全局作用域中,可能对导致很多冲突,使用命名空间目的是对标识符名称进行本地化,以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题...2.缺省参数不能在函数声明和定义同时出现,声明定义分离,规定在声明给出缺省值。  ...采用C语言编译器编译后结果:  采用C++编译器编译后结果: 结论:在linux下,采用g++编译完成后,函数名字修饰发生改变,编译器函数参数类型信息添加到修改后名字。...值、引用效率比较: 以值作为参数或者返回值类型,在参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或者返回变量一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下...12.指针空值nullptr(C++11) C++98指针空值: 在良好 C/C++ 编程习惯,声明一个变量最好给该变量一个合适初始值,否则可能会出现 不可预料错误,比如未初始化指针

95120
领券