随笔分类 - C++
摘要:先说一个容易犯的错误,如果B继承A。B,A都是带参的构造函数,那么,在定义的时候容易出现:no appropriate default constructor available看以下代码:class A{public: A(int k);};A::A(int k){}class B:public A{public: B(int m,int n=1){}};由于在构造B时,须先构造A,但由于已经指定了带参的构造函数,编译器不会自动提供默认的无参构造函数了,所以,没办法给A传参,就无法构造A,应该在B的构造函数中给A传参如:B(int m,int n=1):A(1){}//注意,不能...
阅读全文
摘要:代码:int edita(int& b);int main(){ int a=100;edit(a); printf("a=%d",a);return 0;}int edit(int& b){b=88;return 0;}输出88
阅读全文
摘要:1 函数后带const,如:ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const;直接看例子:class R { public: R(int r1, int r2) { R1=r1; R2=r2; } void print(); void print() const; private: int R1, R2; }; void R::print() { cout<<R1<<R2<<endl;cout<<"it'
阅读全文
摘要:先来看普通函数调用。有类如下:class A{public:void callfunc(int a,int ,int ){printf("A::callfunc\r\n");}};int main(){A *pA=NULL;pA->callfunc();return 0;}惊奇地发现,调用函数无需任何空间,无需实例化类,只需定义一个类A的指针即可,这说明了,类内函数的调用,不依靠对像传递任何东西。只要编译器识别到指针的类型(属于哪个类)即可。当然,有一种情况例外,那就是。。。虚函数看以下代码:#include#includeclass A{public:void f1
阅读全文
摘要:1std::partition Syntax:#include <algorithm>bidirectional_iterator partition( bidirectional_iterator start,bidirectional_iterator end, Predicate p );算法partition按照谓词p的返回值是true或是false重新整理[start, end)之间的所有元素.换句话说, partition利用p将元素分成两组. 其返回值是一个指向false组第一个元素的迭代器partition以线性时间(linear time)运行直接看以下代码:bo
阅读全文
摘要:上面有博文已经分析过一件事,现在扩展一下,顺带提下this指针class Test{void callBackFun(){}};void main(void){Test::callBackFun();//非法,即使调用函数无需实例化,这样的直接调用也是不被允许的,因为参数 不够,参数表里还需一个(Test* this)Test* test;test->callBackFun();//合法,这里显然传入的this指针即为test,因test未指向任何值,故只能调 函数,取成员变量时即出错Test test_valid;test=&test_valid;test->callBa
阅读全文
浙公网安备 33010602011771号