【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

C++入门基础知识:类和引用

原创 2016年05月31日 09:07:40

一.类(类的6个默认函数)、对象、面向对象等概念

1.cpp的数据类型(除去C中的)

基本数据类型:bool型 逻辑型              非基本型:类 class

                       void型 无类型         

【1】命名空间(为了解决全局变量命名冲突的问题)

例:#include<iostream.h>

using namespace std;    //标准输入输出流,命名空间为std

int main()

{

cout<<''hello world''<<endl;     //cout和endl为对象,来自命名空间,若前面没有声明命名空间,则写为:std::cout<<”hello world“<<std::endl;

system('''pause');

return 0;

}

可以随时向命名空间添加定义,但是都定义在同一命名空间

例:#inlcude<iostream.h>

 namespace bit1      //定义一个命名空间

{

int a=0;

}

namespace bit2      //定义另一个命名空间

{

int a=20;

}

int main()

{

bit1::a=30;               //::为作用域解析符

bit2::a=40

}

2.输入/输出 流

cout →标准输出流对象,<<输出操作符;

cin→标准输入流对象,>>输入操作符;

endl→标准换行操作符;

3.函数重载

例:#include<iostream.h>

using namespace std;

int add(int num1,int num2)

{

return num1+num2;

}

float(float f1,float f2)

{

return f1+f2;

}

int main()

{

int num1=0;

int num2=0;

float f1=0.0;

float f2=0.0;

cin>>num1>>num2;

int ret=add(num1,num2);

cout<<"ret="<<ret<<endl;

cin>>f1>>f2;

float f3=add(f1,f2);

}

注意:【1】在同一作用域内,一组函数名相同,参数列表<个数/类型不同>不同,返回值类型可同可不同。

          【2】判断函数是否重载时,只需要判断其函数名和参数列表是否相同即可。

          【3】在c和cpp中,函数重载的规则不一样,所以在cpp中使用c的函数时要用extern ”c“。

4.缺省函数

【1】全缺省函数

例;int add1(int a,int b)

{

return a+b;

}

int main()

{

int ret=add1();      //此处可以不用写参数,若将其改为add1(3),则结果为3,原因是参数是从左往右填充的

return 0;

}

【2】半缺省函数

例:int add2(int a,int b=0)

二.指针与引用

引用的概念:【1】不是定义一个新的变量,而是给一个已经定义的变量赋予一个新的名字,且该变量可以被多次引用,即一个变量可以有多个别名;

                   【2】引用要进行初始化,要明确谁是谁的别名;

                   【3】引用可以传递,例如&q=m;&r=q;

                   【4】一个别名只能引用一个变量

1.const引用

例:#include<iostream.h>

using namespace std;

int main()

{

int *q=NULL;

const int *p=q;

int m=10;

const int &n=m;    //常引用,此时的n作为一个常量对待,不能直接修改n,只能通过修改m来修改

return 0;

}

注意:【1】不能将一个const修饰的变量赋给一个非const修饰的变量

    【2】不能将一个常量直接引用,除非加上const,如const int &r=5

例:double b=3.14;

      const int &k=b;

         【3】在代码执行过程中,中间变量<临时>为常属性,则要用const来修饰。

2.引用用在函数参数中

例:#include<iostream.h>

using namespace std;

int swap(int *a,int *b)            //传指针的方式交换两个变量的值

{

int tmp=*a;

int *a=*b;

*b=tmp;

}

对于swap函数而言,还有另一种方法就是利用引用

例:void swap(int &a,int &b)

{

int tmp=a;

a=b;

b=tmp;

}

int main()

{

int a=10;

int b=20;

swap(a,b);

return 0;

}

3.常引用传参(当不希望函数内改变参数X的值的时候)

例:void ReadBigData(const BigData &x)

{

int a=x.arr[1000];

}

注意:返回值作为引用的时候,不能引用一个临时变量

例:int fun()

{

int ret=10;

return ret;    //这里返回了一个临时变量,最好不要这样写

}

4.值返回和引用反汇编

【1】值返回:将ret中的值放到eax寄存器中

        汇编语言:Mov eax,dword ptr[ret];

【2】引用反汇编:将ret的地址放到eax中,和指针一样

汇编语言:Lea eax,[ret];

例:#include<iostream.h>

using namespace std;

 ①int add(int a,int b)

{

int ret=a+b;       

return ret;

}

  int *add()

{

int ret=a+b;

return &ret;

}

③int &add(int a,int b)

{

int ret=a+b;

return ret;

}

以上三个add函数的功能是一样的。

引用和指针的区别和联系:

1.引用只能开始的时候初始化一次,后面便不能再指向其他变量;

2.引用必须指向有效变量,而指针可以为空;

3.sizeof引用指的是引用对象的大小,sizeof指针指的是对象地址的大小;

4.指针和引用的自增或自减的意义不一样;

5.相对而言,引用比指针更安全;


本文出自 “福大馨” 博客,转载请与作者联系!

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

.net基础知识篇-虚函数-父类的引用指向之类的对象

A a =new B(); 其中A是申明类,B是实例类。 1.当调用一个对象的函数时,系统会直接去检查这个对象申明定义的类,即申明类,看所调用的函数是否为虚函数; 2.如果不是虚函数,那么它就直接执行该函数。而如果是一个虚函数,那么这个时候它就不会立刻执行该函数了,而是开始检查对象的实例类。 3.在这个实例类里,他会检查这个实例类的定义中是否有实现该虚函数或者重新实现该虚函数(通过override关键字)的方法, 如果有,它就不会再找了,而是马上执行该实例类中实现的虚函数的方法。而如果没有的话,系统就会不停地往上找实例类的父类, 并对父类重复刚才在实例类里的检查,直到找到第一个重载了

【引用】〔原创〕Ubuntu Linux 新手入门级基础知识须知

注:真心感谢群里 老强 的帮忙,对此文档做的修改和完善!~一. Ubuntu Linux 介绍Ubuntu Linux,是一个基于debian的Linux操作系统。在桌面应用方面,它是众多Linux系...

经典书籍《C++ Primer》 C++基础知识:函数,类 .........

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。 </

C++入门基础知识

1.命名空间  命名空间是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字,它的作用是可以解决全局命名冲...

Windows Imaging Component 基础知识

来自网络:http://dev.21tx.com/2009/02/09/14033.html   目录 <p style="margin-top: 12px; margin-bottom: 12px; padding: 0px; font-family: Verdana; font-size:

C++基础知识——引用

1.引用就是变量的别名,需要用另一个变量或者对象进行初始化:int &b = a。 2.引用必须初始化,初始化时引用指向的对象必须存在。 3.引用和变量指向同一块内存,通过引用可以改变内存中的内容...

C#入门基础知识

C#入门基础 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识(学而时习之嘛),总结了25个问题: 1.静态成员和非静态成员的区别? 2.const 和 stati

C++入门基础知识

命名空间 命名空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字。 名字空间域解决全局命名冲...

[C++][基础知识 3]虚基类

三 虚基类 如图所示,如果类B和类C均由类A派生而成,而类D又是由类B和类C共同派生而成,则在派生类D中就出现了基类A的两个拷贝,从而产生了冲突。为了解决此问题,VC++中引入了虚基类的概念,即在由类A派生类B和类C时,如果将基类A说明为虚基类,则类A在此后的派生类中只生成一个拷贝。例如: [code="c++"] #include class A{ public: int a,b; A(int x){a=x;} }; class B:virtual public A{ //A行 public: int b; B(

C++中引用的基础知识

》引用         引用是个别名,建立时须用另一个数据对象(如一个变量)的名字进行初始化,以指定该引用所代表的数据对象。此后,对引用的任何操作实际上就是对所代表的数据对象的操作。系统不会为引用再...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)