C++ opencv小试2

           对于判断条件(if等)只有当条件为0时认为是假,其余都是真。if(-1):这也是真条件。当遇到判断条件很复杂时,可以分多个if 也可以用()将条件括起来(但这样看起来比较复杂会)。

          对于数据的精度,经过测试,C++大于python 大于shell ,小数点后几十位的精度应该是可以满足日常需求的,我们可以将数据放大1000倍等,将小数扩大。这是十分常见的过程,方便人们的观察!(精度问题一般考虑的比较少,因为PYTHON都可以写巨型的程式,C++自然是可以的)

         对于结构体和类,结构体是一个什么重要的概念,它可以放入STL的容器当中,类的出现很大程度上也是在结构体上的改进,类也可以放入STL容器当中,其实类可以看成是复杂的结构体,用结构体表示的东西其实都可以用类来表示,他们都存储有数据信息,只是在访问的方法上有差异,类相对来说更加复杂。结构体的开销比类要少,所以能用结构体方便的表述问题时,用结构体比较好,类描述问题比较好时,用类,一般来说程序是类与结构体结合的。

         类与结构体类似,可以复用,这里不推荐用继承和派生的方法,这些方法对于不是专业的C++程序猿来说,还是比较有困难的,基本几天不用就忘了。对于初学者,本人极力推荐用类的组合方法,在一个类的私有中存放另一个类的指针(智能指针),这种方法有其显而易见的好处,可控性强,语法简单,看起来还比较容易理解。一辆汽车是各种零件的组合,最后的汽车有各种零件,就是这种思想。由于C++是只要在同一级上无歧义,也既可以正确指明对象就可以通过,如:

     Person feng;
      int age(18);
      feng.age=age;
      cout<<feng.age<<endl;

     同理这种类组合的方法,可以通过名称正确指代需要的变量,访问到底层类的内容,当然我们希望底层类中有公有函数可以访问其私有的内容。另外结构体可以很好地描述复杂的问题,树与图等,恰当的结构体可以省去非常多时间,数据结构与STL是一本比较好的介绍书。有了以上这些概念,并且有数据结构的知识,熟练运用STL,应该可以解决一般性的问题了。

      对于多文件的问题,C++是按照cpp文件来规划的,希望在main.cpp中为主体,其他的都是函数的定义,这种标准的形式比较好的特点就是便于理解,便于其他人读懂传播。cpp之间的参数传递希望一律用函数参数的方法,static的传递法前面不用加static,如static int a;可以用 void  xx(int &a)去引用。cpp包含了头文件,头文件中的声明(不可定义具体的实例)就可见了。cpp中还会包含头文件中包含的头文件,可以不用写,但如果在头文件中都用了防止重包含的声明,还是建议大家写一下比较好,以为这样可以清楚的知道这个cpp到底关联了那些头文件,而不需要一层层去找。主要在头文件中,很多的地方都要加分号。

       对于using namespace ,这其实是由于有些定义(一般是函数)为了防止重复,作者给了一个命名空间,这样可以包含了头文件后与库后,可以用空间名访问不同空间的同名函数而不会报错。using namespace就是将其透明化了 ,在定义时,#include using namespace的 不需要到那么namespace{}里面。在using namespace后还是可以用空间名::函数名来访问(不会冲突),但若加了好几using namespace有冲突的函数,那么直接访问就报错了。函数如果有冲突的话,那就加空间名再访问吧,这样的访问是完全完备的。一般来说,标准化的库函数前面会加有特殊标示字符,这样一定程度上避免冲突,using namespace cv 等;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值