08 2018 档案
摘要:主要注意它们的优先级都很高,且都是左结合的,不同在于点操作符操作的是对象,箭头操作符操作的是指针,且都能被其对应的类型的数值右值赋值。 以下是例子: #include<iostream> using namespace std; struct Point{ double x,y; }; int ma
阅读全文
摘要:有一个问题,那就是既然指针都是4字节,为什么要有不同类型的指针,只有一个不就好了吗? 原因有两个: 1.为了地址增量的方便 看这个例子 #include<iostream> using namespace std; int main(){ double b = 13; double *p_b = &
阅读全文
摘要:class A { int _a; public: A(int a): _a(a){} friend int f1(A &);//1 friend int f2(const A &);//2 friend int f3(A);//3 friend int f4(const A);//4 }; /*.
阅读全文
摘要:空悬指针 简单地说,空悬指针是对象的指针的生存周期比对象更长所导致的,也就是说,对象销毁、删除了,不存在了,指针仍然存在,这时这个指针就成了空悬指针。 当对象被析构、删除时,如果指向它的指针没有被同时修改,那么指针仍然会指向那块内存(但是那块内存已经没有东西了)。系统此时可能会重新分配这块已经fre
阅读全文
摘要:C++ double型不能实施%操作符,作为除数被除数都不可以,但可以用fmod函数,则作为除数被除数都可以,即 fmod = numer - tquot * denom //tquot 是除法结果向“下”取整(向0的方向)的结果,denom是除数 一个例子是 /* fmod example */
阅读全文
摘要:#include<iostream> using namespace std; int main(){ int b[4]={1,2,3,4}; const int* a = b; int * c = a;//error: invalid conversion from 'const int*' to
阅读全文
摘要:1.位运算 位运算可以有效改善乘除法比较慢的问题,同时,用除法可以避免double型变量,因为一个整数除以某个数就可以变成小数,当然,这里的前提是要是2的整数次幂才好做除法,同时要能忍受一定的精度损失。
阅读全文
摘要:#include<iostream> using namespace std; int *test_array(int *a){ int length = sizeof(a)/sizeof(a[0]); int *b = new int [length]; for (int i = 0; i < l
阅读全文
摘要:#include<iostream> using namespace std; void printhaha(){ static char haha[] = "haha"; cout<<"hello "<<haha<<endl; haha[0] = haha[0]+1; } void printhe
阅读全文
摘要:int main(){ char []a = "haha";//error return 0; } error: decomposition declaration cannot be declared with type 'char' error: empty decomposition decl
阅读全文
摘要:基本上1D Measure都是建立一个ROI(region of interest,感兴趣区域),然后在感兴趣区域提取出边界的测量。常见的ROI有矩形ROI和圆环ROI。 下图为一个矩形ROI,中间的Profile Line为横截线,Center是行和列的坐标,Phi指定了它的倾斜角度,Length
阅读全文
摘要:在计算机程序中,句柄是一个对资源的抽象引用。句柄被使用时往往是应用程序引用的内存块或者对象被其他系统掌控着,例如被其他数据库或者操作系统控制。一个资源的句柄可以是一个不透明的标识符--即程序员可以使用但不知道其具体是如何实现的--它通常是一个整数(通常是一个表,或数组,管理着某一类的资源),或者可以
阅读全文
摘要:区别在于const关键字的位置不同 int const add(int &a,int &b){ //....... return a; }//返回值为常量 int add(int &a, int & b) const { //....... }//常量函数 理解const是做结合的,就不难理解两者“
阅读全文
摘要:#include<iostream> using namespace std; int main(){ int i = 20; int j = 40; int & a = i; int & b = i; //int & c = i*2; //error reference 不能用右值赋值 int c
阅读全文
摘要:```cpp void colorReduce(cv::Mat image,int div){ int nr = image.rows; int nc = image.cols image.channels(); for(int i = 0;i(j); for(int j = 0;j
阅读全文
摘要:以彩色图像威力,图像数据缓冲区的前三个字节对应图像左上角像素的三个通道值,接下来的三个字节对应第一行的第二个元素,以此类推。(OpenCV默认使用BGR的通道顺序,因此第一个通道通常是蓝色).一个宽为W、高为H的图像需要一个大小有WH3个uchar构成的内存块。但是,处于效率的考虑,每行会填补一些额
阅读全文
摘要:cv::Mat类型的成员函数的返回值类型有时候需要通过模板参数指定,如果已经事先知道返回值的类型,则可以使用Mat类的子类Mat_类代替。当然,在创建Mat_类的时候,就已经指定了类型。例如: cv::Mat im1 = image; im1.at<cv::Vec3b>(j,i) = value;/
阅读全文
摘要:一个对象以值传递的方式传入函数体 一个对象以值传递的方式从函数返回 一个对象需要通过另外一个对象进行初始化
阅读全文
摘要:对象定义有两种形式 type_specifier object_name; type_specifier object_name = initializer; 举例而言就是 int a; int a = 1; 基本上变量的声明和定义是一起的,这个过程就会引起内存分配。上面说的两种形式的区别在于是否初
阅读全文
摘要:以C++ Primer 3rd ed 习题8.1为例分析: #include<iostream> using namespace std; int ix = 1024;// global scope int ix();// 1 error: 'int ix()' redeclared as diff
阅读全文
摘要:C++程序中每个名字都必须指向唯一的一个实体(如对象、函数、类型或模板)。但是我们都知道,在一个程序中,经常出现相同的名字指向不同的实体。这个实现的机制就是编译器根据上下文(Context)区分出名字的不同含义。而用来区分名字含义的一般上下文就是域(scope)。C++支持三种形式的域:局部域(lo
阅读全文
摘要:结论是,没有什么区别。 直接声明定义的意思是 void func(){ //code; } int main(){ //code } 先声明后定义的意思是: void func(); } int main(){ //code } void func(){ //code; } 形式可能不完全像这样,但
阅读全文
摘要:###1.函数指针的定义 int (*fp)(int a,int b); 这里fp就是一个函数指针,表面上看,它的语法即是把函数名替换成指针,再加个括号。 #include<iostream> using namespace std; void show(int num){ cout<<num; }
阅读全文
摘要:不能写什么 一个.c或者.cpp文件在编译时就成了一个编译单元,而同一个函数的定义、全局变量的定义不能再头文件中进行,因为这个头文件会被两个以上的c/cpp文件调用,每一次的调用,都重新定义了这样的函数和变量,这时,链接器就会告诉你,***变量或函数重定义。 该写什么 基本上,除了实现的东西,都可以
阅读全文
摘要:TrackbarCallback 回调函数必须为 void(int,void*),如果你用了传其它参数的函数,对不起,报错与cv::TrackbarCallback类型的形参不兼容。 同时,这也代表里面用的参数可能得设置成全局变量了,虽然有时候设置过多的全局变量回很复杂,但这里似乎不可避免,首先这里
阅读全文
摘要:错误: default argument missing for parameter 2 of 如果参数赋值不是全都有,那么需要把赋值的参数放到后面,同时,在构造函数中只需要把未初始化赋值的参数再传值,即可以完成正确构造。 代码示例如下: #include<iostream> using names
阅读全文
浙公网安备 33010602011771号