C++
文章平均质量分 64
嗨,人
这个作者很懒,什么都没留下…
展开
-
libcmt.lib和msvcrt.lib冲突,原因和解决方法
libcmt.lib和msvcrt.lib冲突,原因和解决方法原因解决方法libcmt.lib是windows环境下vc提供的静态运行时库(多线程);msvcrt.lib是动态运行时库。原因由于DLL(或EXE)工程设置的Runtime Library 和 它导入的其他(.lib)库的Runtime Library不同。比如: 下面为Release版,其中Runtime Library和use of MFC 需要匹配(所以这两个内容的设置是两两对应的)类型我的DLL工程需要调用的lib原创 2021-02-26 13:51:34 · 1405 阅读 · 0 评论 -
C++STL中list, vector, map, set用法与区别
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector与listVector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要...原创 2020-11-02 10:03:18 · 1224 阅读 · 0 评论 -
03:尽可能使用const
1.const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量void f1(const int *ip);void f2(int const *p);//这两个函数接受的参数类型一样,都表示一个指向常量的指针2.令函数返回一个常量值class Rational{...};const Rational oper...原创 2020-11-02 10:02:23 · 494 阅读 · 0 评论 -
游戏引擎中应用到的小技巧
计算结构体成员内存偏移量#define STRUCT_OFFSET(struc,member)((int)&((struc*)NULL)->member)替换基类内存信息class A{public:int a;int b;}class B:public A{public:int c;}B b;b.a = 1;b.b = 2;A na;na.a = 3;na.b = 4;(A&)b=na;RTTI 动态类型识别枚举转换成字符串inline String Valu原创 2020-11-02 10:01:36 · 457 阅读 · 0 评论 -
35个改善编程与设计的有效方法
01:指针与引用的区别因为引用肯定会指向一个对象,在 C++里,引用应被初始化指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是 引用则总是指向在初始化时被指定的对象,以后不能改变。还有一种情况,就是当你重载某个操作符时,你应该使用引用。最普通的例子是操作符 []。这个操作符典型的用法是返回一个目标对象,其能被赋值。总的来说,在以下情况下你应该使用指针,一是你考...原创 2020-03-26 16:28:42 · 379 阅读 · 0 评论 -
改善C++11和C++14使用的42种具体方法(简版-下)
《Effective Modern C++》22:如果使用Pimpl惯用法,则要在实现文件中定义特殊成员函数Pimpl惯用法通过减少类的实现和类的客户端的编译依赖关系缩减了编译时间。如果std::unique_ptr用于pImpl指针,则在类的头文件中声明特殊成员函数,在实现文件中实现。即使默认的函数实现可以接收的话也可以这么做。以上建议适用于std::unique_ptr,但不适用...原创 2020-03-21 22:58:15 · 432 阅读 · 0 评论 -
改善C++11和C++14使用的42种具体方法(简版-上)
改善C++11和C++14使用的42中具体方法(简版)原创 2020-03-21 15:18:51 · 530 阅读 · 0 评论 -
C++模板与泛型编程(41-49条款)
41:了解隐式接口和编译器多态请记住42:了解typename的双重意义请记住43:学习处理模板化基类内的名称请记住44:将与参数无关的代码抽离templates请记住45:运用成员函数模板接收所有兼容类型请记住46:需要类型转换时请为模板定义非成员函数请记住47:请使用traits classes表现类型信息请记住48:认识template元编程请记住...原创 2020-03-15 14:34:29 · 319 阅读 · 0 评论 -
Linux(CentOS 7)使用gcc编译c,c++代码
安装gcc:1、使用 yum -list gcc* 查询 centos 官方gcc的所有包:可安装的软件包gcc.x86_64gcc-c++.x86_64gcc-gfortran.x86_64gcc-gnat.x86_64gcc-go.x86_64gcc-objc.x86_64gcc-objc++.x86_64gcc-plugin-devel.x86_642、根据需要安装包...原创 2020-03-15 14:27:14 · 2410 阅读 · 0 评论 -
C++资源管理(13-17条款)
13:以对象管理资源举个例子:class TeamSys{...}TeamSys* createTeamSys();//返回指向动态分配的对象TeamSys的指针,调用者有责任删除它。void f(){ TeamSys* ts = createTeamSys(); ... delete ts;}以上代码中…,可能会出现异常或者return ,会导致ts所指向的对象无法获得...原创 2020-03-15 08:46:20 · 234 阅读 · 0 评论 -
C/C++可变参数函数
一、变长参数函数头文件:#include <stdarg.h>函数声明int add(int count, ...);函数定义int add(int count, ...){ va_list va; va_start(va, count); int sum = 0; for (int i = 0; i < count; i++) sum += va_ar...原创 2020-03-12 17:19:56 · 887 阅读 · 1 评论 -
C++将变量名转换为字符串
如何将变量名转换为字符串,这就用到了define中的特殊标识符##是简单的连接符,#@用来给参数加单引号,#用来给参数加双引号即转成字符串。#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #xint a=Conn(12,34);char b=ToChar(a);char c[]=ToStrin...原创 2020-03-12 14:04:07 · 9925 阅读 · 4 评论 -
C++中的关键字auto
百度百科维基百科C语言auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存auto double a=3.7;C++ 98标准/C++03标准同C语言的意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。C++ 11标准在C++11标准的语法中,auto被定义为自动推断变量的类型。例如:auto x=5.2;//...原创 2020-03-12 13:44:55 · 703 阅读 · 0 评论 -
55:让自己熟悉Boost
Boost是一个C++开发者集结的社群,也是一个可以自由下载的C++程序库群。它的网址是https://www.boost.org/Boost的两个原因使其他组织无法匹敌: (1)它与C++标准委员会之间有着独一无二的密切关系,并且对委员会深具影响力。Boost由委员会创设,因此Boost成员和委员会成员有很大的重叠。Boost有个目标:作为一个“可被加入标准C++之...原创 2020-03-12 12:46:15 · 285 阅读 · 0 评论 -
C++继承与面向对象设计(32-40条款)
32:确定你的public继承塑模出is a关系33:避免遮掩继承而来的名称34:区分接口继承和实现继承35:考虑virtual函数以外的其他选择36:绝不重新定义继承而来的非虚函数37:绝不重新定义继承而来的缺省参数值38:通过复合塑模出has a或”根据某物实现出“39:明智而审慎地使用private继承40:明智而审慎地使用多重继承...原创 2020-03-12 11:09:33 · 290 阅读 · 0 评论 -
C++设计与声明(18-25条款)
18:让接口容易被正确使用,不易被误用19:设计class犹如设计type20:宁以pass by reference to const 替换pass by value21:必须返回对象时,别妄想返回其reference22:将成员变量声明为private23:宁以non member、non friend替换member函数24:若所有函数都需类型转换,请为此采用non member...原创 2020-03-11 13:42:04 · 282 阅读 · 0 评论 -
C++实现(26-31条款)
26:尽可能延后变量定义式的出现时间std::string str;str = password;....//将password作为encrypted的初值,跳过毫无意义的default构造过程std::string str(password);...上述行为可以避免构造非必要对象,还可以避免无意义的default构造行为。尽可能延后变量定义式的出现。这样做可增加程序的清晰...原创 2020-03-10 11:27:53 · 698 阅读 · 0 评论 -
C++构造/析构/赋值运算(05-12条款)
05 :了解C++默默编写并调用哪些函数编译器可以暗自为class创建默认构造函数、拷贝构造函数(初始化调用)、拷贝赋值操作符(赋值调用)、析构函数·类名(){...类名(const 类名& rhs){...}~类名(){...}类名& operator=(const 类名& rhs){...}06:若不想使用编译器自动生产的函数,就该明确拒绝为了阻止编译器...原创 2020-03-09 18:28:37 · 221 阅读 · 0 评论 -
01:视C++为一个语言联邦
C区块、语句、预处理器、内置数据类型、数组、指针局限:没有模板,没有异常,没有重载…。Object-Oriented C++classes,封装,继承,多态,virtual函数(动态绑定)Template C++编程泛型(模板元编程)STLtemplate程序库容器、迭代器、算法以及函数对象例:对于内置语言类型而言pass by value通常 pass by referenc...原创 2020-03-09 16:32:15 · 226 阅读 · 0 评论 -
《改善程序与设计的55个具体做法》-思维导图
原创 2020-03-08 22:38:31 · 432 阅读 · 0 评论 -
C++中字符串与数值转换(超详细)
文章目录一、使用stringstream(简单粗暴)1.stringstream2.istringstream和ostringstream二 使用函数1 字符串转成数值3.char数组转换成数值3.数值转换为字符串三 总结下面会介绍两种字符串和数值相互转换方法:stringstream和函数一、使用stringstream(简单粗暴)C++中有ostringstream、istringst...原创 2020-03-06 14:55:46 · 5468 阅读 · 0 评论 -
c++创建与调用dll
一、DLL动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成,因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定...原创 2020-03-05 12:02:16 · 587 阅读 · 0 评论 -
C++教程(最全)
C++简介原创 2020-03-04 15:21:05 · 338907 阅读 · 190 评论 -
c++中内联函数那点事
1 内联(inline)函数 c++在编译时可以讲调用的函数代码嵌入到主调函数中,这种嵌入到主调函数中的函数称为内联函数,又称为内嵌函数或内置函数。定义内联函数时,在函数定义和函数原型声明时都使用inline,也可以只在其中一处使用,其效果一样。内联函数在编译时用内联函数函数的函数体替换,所以不发生函数调用,不需要保护现场,恢复现场,节省了开销...原创 2020-03-02 12:05:39 · 645 阅读 · 0 评论