文章分类 -  C++

c++ 类中static变量初始化问题
摘要:首先static变量只有一次初始化,不管在类中还是在函数中..有这样一个函数: view plaincopy to clipboardprint? void Foo() { static int a=3; // initialize std::cout << a; a++; } view plain 阅读全文

posted @ 2016-08-15 00:53 A-祥子 阅读(3960) 评论(0) 推荐(0)

类成员变量初始化时的小错误
摘要:在类中,成员变量初始化的顺序是由它们声明的先后顺序执行的 偶尔会忘记。 栗子: #include<iostream>using namespace std; class base{private: int m; int n;public: base(int i) :n(i), m(n){} //初始 阅读全文

posted @ 2016-08-15 00:30 A-祥子 阅读(267) 评论(0) 推荐(0)

编写操作符重载时遇到的问题:
摘要:当我把声明的类函数和实现,分别放在头文件和.cpp文件中,进行编译,出现大量的未定义错误,而且无法调试。 头文件中的声明: class mystring{public:mystring();mystring(const char*str);mystring(const mystring&other) 阅读全文

posted @ 2016-08-12 16:18 A-祥子 阅读(192) 评论(0) 推荐(0)

关于动态分配内存:
摘要:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 全局变量,static变量。 (2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建, 函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中 阅读全文

posted @ 2016-08-12 10:30 A-祥子 阅读(423) 评论(0) 推荐(0)

纯虚函数和抽象类存在的意义:
摘要:一、定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion1()=0二、引入原因 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。 2、在很多情况下,基 阅读全文

posted @ 2016-08-11 19:26 A-祥子 阅读(4990) 评论(2) 推荐(0)

C++中虚析构函数的存在:什么情况下析构函数需要设置成虚函数
摘要:首先要明确: 1.每个析构函数(不加 virtual) 只负责清除自己的成员。2.可能有基类指针,指向的确是派生类成员的情况。(这是很正常的), 那么当析构一个指向派生类成员的基类指针时,程序就不知道怎么办了。 所以要保证运行适当的析构函数,基类中的析构函数必须为虚析构。 基类指针可以指向派生类的对 阅读全文

posted @ 2016-08-11 17:31 A-祥子 阅读(698) 评论(0) 推荐(0)

C++继承中重载、重写、重定义的区别:
摘要:重载overload:是函数名相同,参数列表不同 重载只是在类的内部存在。但是不能靠返回类型来判断。 重写override:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。函数特征相同。但是具体实现不同,主要是在继承关系中出现的 。 重写需要注意: 1 被重写的函数不能是static的。必须 阅读全文

posted @ 2016-08-11 11:21 A-祥子 阅读(29534) 评论(1) 推荐(0)

C++中多态原理:VPTR虚函数表
摘要:一多态产生的条件: 1有子类继承父类 2存在虚函数重写 3父类指针指向子类对象,或是父类引用子类对象 二虚函数表和vptr指针 1当类中声明虚函数时,编译器会在类中生成一个虚函数表 2虚函数表示一个存储类成员函数指针的数据结构 3虚函数表是由编译器自动生成与维护的 4virtual成员函数会被编译器 阅读全文

posted @ 2016-08-11 09:40 A-祥子 阅读(1435) 评论(0) 推荐(0)

C++中函数重载规则和底层的实现原理浅析:
摘要:一编译器调用重载函数的准则: 1将所有同名函数作为候选者 2尝试寻找可行的候选函数 3精确匹配实参 4通过默认参数能够匹配实参 5通过默认类型转换匹配实参 6匹配失败 7最终寻找到的可行候选函数不唯一,则出现二义性,编译失败 8无法匹配所有候选者,函数未定义,编译失败。 二重载底层实现(name m 阅读全文

posted @ 2016-08-10 23:39 A-祥子 阅读(1110) 评论(0) 推荐(1)

gcc编译器和g++编译器的区别:
摘要:gcc 最开始的时候是 GNU C Compiler, 如你所知,就是一个c编译器。但是后来因为这个项目里边集成了更多其他不同语言的编译器,GCC就代表 the GNU Compiler Collection,所以表示一堆编译器的合集。 g++则是GCC的c++编译器。现在你在编译代码时调用的gcc 阅读全文

posted @ 2016-08-10 12:50 A-祥子 阅读(526) 评论(0) 推荐(0)

导航