随笔分类 - c++
摘要:声明 本文版权归作者所有。 本文原创,转载必须在正文中显要地注明作者和出处,并保证文章(包括本声明)的完整性。 未经作者授权请勿修改(包括本声明),保留法律追究的权利。 未经作者授权请勿用于学术性引用。 未经作者授权请勿用于商业出版、商业印刷、商业引用以及其他商业用途。 一直以来觉得函数指针和函数指
阅读全文
摘要:大小 size()是取字符串长度的,跟length()用法相同 size_t其实是一种类型,类似于无符号整形(unsignted int)。可以理解成unsignted int size,当unsignted int用就可以了。size_t b=100; sizeof(...)是运算符,其值在编译时
阅读全文
摘要:1: 不要使用宏,用const或enum定义常量 用inline避免函数的额外调用(使用inline的函数,块里面尽量不要使用循环和递归) 用template去荷花一些函数或者类型 用namespace去避免命名冲突 2:不要在你需要变量之前去声明它,以保证你能立即对他进行初始化 声明可以出现在所有
阅读全文
摘要:#include void say_hello() { std::cout << "hello world !" << std::endl; } class Hello { public: void operator () () { std::cout << "hello cpp !" << std::endl; }//重载运算符(); }; int main() {...
阅读全文
摘要:c++,类的对象作为形参时一定会调用复制构造函数吗?答:如果参数是引用传递,则不会调用任何构造函数;如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在,函数执行结束之后调用析构函数。如果类中没有定义复制构造函数 那对象就不能作为形参?答:如果没有定义,编
阅读全文
摘要:在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋值操作符。我就斗胆将他们命名为六大函数好了。 一、构造函数 c++primer中说过:构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作就是保证每个对象的
阅读全文
摘要:今天专门看了一下虚继承的东西,以前都没怎么用过,具体如下:父类: 复制代码代码如下: class CParent { .... }; 继承类的声明比较特别: class CChild : virtual public CParent { .... } 请问,这个"virtual"是什么作用及含义?
阅读全文
摘要:为了实现虚函数,C ++使用了一种称为虚表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表格有时会以其他名称,如“vtable”,“虚拟功能表”,“虚拟方法表”或“调度表”。 因为了解虚拟表的工作原理并不需要使用虚拟功能,所以这部分可以被认为是可选的阅读。
阅读全文
摘要:面向对象中(包括C++),继承是用来描述“是一种”关系,比如说: 中国人是人类的派生类,这里就有”是一种“关系,你是中国人当然也是人了。派生类继承了基类的所有成员,派生类对象理所当然可以当做基类对象来用(相当于儿子继承了父亲所有的遗产,所以儿子可以用父亲的钱)。C++中,一般是将派生类对象传递给基类
阅读全文
摘要:运算符可以作为普通函数,朋友函数或成员函数来重载。下面的经验法则可以帮助您确定哪种形式最适合于给定的情况: 如果你重载了赋值(=),下标([]),函数调用(())或成员选择( - >),那么它就是成员函数。 如果你重载一个一元运算符,那么作为一个成员函数。 如果你重载了一个修改左操作数的二元运算符(
阅读全文
摘要:构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。 构造函数的种类 下面使用上面定义的类对象来说明各个构造函数的用法: 参考:http://www.cnblogs.com/xkfz007/a
阅读全文
摘要:重载不能改变操作符的优先级 如果一个内建操作符是一元的,那么所有对它的重载仍是一元的。如果是二元的重载后也是二元的 下面看一个有代表性的例子:: 头文件Complex.h: #includeusing namespace std; class Complex {public: Complex();
阅读全文
摘要:1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const
阅读全文
摘要:#include #include #include #include #include using namespace std; void a(int a) { cout << a << endl; }; void b(int b) { cout << a << endl; }; int main() { decltype(a) &a1=a; //函数引用,给一个declt...
阅读全文
摘要:单文件引用头文件./ 当前目录 ../ 父级目录 / 根目录 多文件引用头文件多文件引用头文件 定义单独放在cpp文件里面 ,声明放在().h)里面
阅读全文
摘要:关于浅拷贝和深拷贝这个问题遇上的次数不多,这次遇上整理一下,先说这样一个问题,关于浅拷贝的问题,先从最简单的说起。 假设存在一个结构体: 这样可以看到的结果是: age is : 18 name is :liming 说明此时的拷贝是成功的,此时的结构体可以通过“=”来直接进行赋值操作,但是接下来
阅读全文
摘要:通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略, 输出的结果也是我们预料中的,分别是This is A和This is B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把ma
阅读全文

浙公网安备 33010602011771号