随笔分类 -  C++基础

摘要:全局变量定义在cpp中,然后h文件里extern。使用的地方包含这个h文件即可。(h文件不定义全局变量)。 如果想在h文件里定义全局变量,可以写在结构体里。 【参考】 (3条消息) C++ 全局变量定义在哪里合适_泰勒朗斯的博客-CSDN博客_全局变量定义在哪里 (3条消息) C语言_结构体封装全局 阅读全文
posted @ 2022-06-26 15:44 夕西行 阅读(601) 评论(0) 推荐(0) 编辑
摘要:简单统计 #include<Windows.h> DWORD startTime = GetTickCount();//计时开始 ...代码块 DWORD endTime = GetTickCount();//计时结束 cout << "耗时:" << endTime - startTime << 阅读全文
posted @ 2022-03-31 11:12 夕西行 阅读(64) 评论(0) 推荐(0) 编辑
摘要:一.释放的问题 1,内存不能跨模块分配和释放,模块分配的内存必须由该模块自己来释放。应该在DLL中再加一个方法,比如MemRelease,主程序调用这个方法来释放内存。 2,就是绕过new和delete,用GlobalAlloc()和GlobalFree()的方法 二.动态链接库的问题 这个问题有两 阅读全文
posted @ 2022-03-24 13:02 夕西行 阅读(2597) 评论(0) 推荐(0) 编辑
摘要:不能从封装性被破坏这个角度去思考此问题。set的设计,有它更广阔的空间。类中使用getter和setter的好处:① 避免因需求变更而增加了不必要的人力成本② 验证输入的有效性③ 便于工程调试④ 便于设计只读变量⑤ 节省RAM内存具体参考此链接6楼孙老师的完美回答。 阅读全文
posted @ 2020-09-28 18:03 夕西行 阅读(194) 评论(0) 推荐(0) 编辑
摘要:引用&必须初始化且不能重新分配,所以列表元素(如vector中元素)不能是引用。代替引用,我们可以使用指针,但这将打开存储或传递空指针的可能性,为了解决这个问题,有std :: reference_wrapper。 引用,其一变,都变。 当您希望将对象从std::reference包装器中取出时,可 阅读全文
posted @ 2020-09-27 22:44 夕西行 阅读(776) 评论(1) 推荐(1) 编辑
摘要:附加包含目录与包含目录没多大区别,两种方式设置其一即可。 个人用 附加包含目录+附加库目录+附加依赖项。如果已经放到工程目录,用 ./ 指定路径。./是当前目录,../是父级目录,/是根目录。 dll文件如果系统环境变量可以识别到,就无需拷贝了。 阅读全文
posted @ 2020-07-15 21:15 夕西行 阅读(479) 评论(0) 推荐(0) 编辑
摘要:struct MyStruct_T //结构体类型 _T { }; MyStruct_T tMyStruct; //结构体对象 t enum MyEnum_E //枚举类型 _E { MIRROR_NO=0, //具体项,全大写 MIRROR_LR, MIRROR_TB, MIRROR_ALL }; 阅读全文
posted @ 2020-06-17 08:52 夕西行 阅读(523) 评论(0) 推荐(0) 编辑
摘要:思路:先在容器中生成顺序的数据,再打乱。random_shuffle()函数的使用。 1-10不重复随机 #include <algorithm> #include <iostream> #include <vector> using namespace std; vector<int> randp 阅读全文
posted @ 2020-02-26 15:23 夕西行 阅读(748) 评论(0) 推荐(0) 编辑
摘要:类中私有属性不可以被类外部操作,如果要操作,可以用友元函数。 class A { public: A(int x,int y) //构造函数,为成员变量赋值 { this->m_x=x; this->m_y=y; } int getA() //获取m_x的值 { return this->m_x; 阅读全文
posted @ 2020-02-08 18:29 夕西行 阅读(168) 评论(0) 推荐(0) 编辑
摘要:*p在等号的左边,是要间接改值,在等号右边则取值。 函数的返回值当左值,则需要返回引用类型(左边必须是一块内存,来承接右边的值)。尤其应用在链式操作中如连+、连=、连<<。【函数返回值是引用类型,此函数当左值、右值】 类外部操作类中私有属性,可以使用友元函数。【友元函数】 自定义类型间的数学运算,可 阅读全文
posted @ 2020-02-08 17:31 夕西行 阅读(172) 评论(0) 推荐(0) 编辑
摘要:加号“+”可以用在特定类型间,如int、double等。如果想用在自定义类型间,那么需要重载操作符“+”。 以虚数加法为例,为了方便理解,先用老办法(函数方式myAdd),之后再转换成操作符 #include <iostream> using namespace std; class Complex 阅读全文
posted @ 2020-02-08 17:30 夕西行 阅读(141) 评论(0) 推荐(0) 编辑
摘要:const修饰,意味着不可更改,即只读。那么const修饰函数时,是谁不可更改?是形参吗? 其实本质上,const修饰的是函数隐含的this指针,this所指向的内存空间不可更改。如下案例中属性x,y不可更改,形参a,b可更改。因为形参在函数被调用时才分配内存。 class Test { void 阅读全文
posted @ 2020-02-01 22:09 夕西行 阅读(290) 评论(0) 推荐(0) 编辑
摘要:类B可以有多个对象b1,b2,b3等。 类B中 static int x; int y; 那么x是类B所有对象共享的共有的,y是对象各自拥有的。 当静态函数中使用y时,编译器不知道是哪个对象的y,所以报错。 【this指针】 this指针是指向具体对象的。普通成员函数都隐式包含一个指向当前对象的th 阅读全文
posted @ 2020-02-01 16:37 夕西行 阅读(397) 评论(0) 推荐(0) 编辑
摘要:函数的返回值当左值,则需要返回引用类型。左边必须是一块内存,来承接右边的值。 函数返回值是引用,返回的是变量本身,即变量的内存。 这个变量必须是静态的或全局的,防止函数之外内存消亡。 #include <iostream> using namespace std; int func() { int 阅读全文
posted @ 2020-01-17 22:01 夕西行 阅读(1724) 评论(0) 推荐(0) 编辑
摘要:《C++ primer plus》(第六版)进阶学习笔记 阅读全文
posted @ 2019-12-29 17:50 夕西行 阅读(151) 评论(0) 推荐(0) 编辑
摘要:【类与类之间的关系】 一、Composition复合,类A内有类B。 二、Delegation委托,类A内有类B,但是是通过指针关联起来的。 三、Inheritance继承,类A:类B,类A继承了类B。最经典用法:继承+虚函数。 设计父类要点: 父类中的函数,尽可能是子类都会用的函数。 父类中无法具 阅读全文
posted @ 2019-12-28 21:15 夕西行 阅读(174) 评论(0) 推荐(0) 编辑
摘要:1、初始化列表,尽量使用。 2、函数是否加const,只用而不改变类成员变量的函数推荐加上const。如自定义的get某个属性的函数。 3、函数参数尽量用引用传递,返回值也优先考虑引用类型(引用必须保证在使用前,本体不能消失。所以返回值是局部变量,就不可以用引用类型,出了大括号,本体就消亡了)。 函 阅读全文
posted @ 2019-12-21 18:08 夕西行 阅读(273) 评论(0) 推荐(0) 编辑
摘要:有些时候我们必须使用静态函数,如类内线程函数必须是静态函数。 当静态函数中出现“无法使用非静态成员变量”错误提示时,就是使用指针参数的时候。 若无法使用的那个变量属于类a,那指针参数就定义成类a的指针。 阅读全文
posted @ 2019-12-20 14:47 夕西行 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-12-14 14:24 夕西行 阅读(76) 评论(0) 推荐(0) 编辑
摘要:推荐初始化的时候就赋值(避免默认的不可预测值),推荐使用初始化列表。 int a=1; 不推荐int a; a=1; 【参考】 声明、定义、初始化与赋值 初始化和赋值的区别 阅读全文
posted @ 2019-12-14 14:12 夕西行 阅读(159) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示