c++
文章平均质量分 55
DXT00
这个作者很懒,什么都没留下…
展开
-
[c++] 虚函数表存在哪?
虚函数表属于类,虚函数表的地址是这个类前4B(32bit)/8B(64bit)子类和父类共用一张表。原创 2024-03-15 20:49:22 · 205 阅读 · 0 评论 -
std::forward
转自:https://riptutorial.com/cplusplus/example/3898/argument-forwardingstd::forward 用于传递一个或者多个参数给函数Example#Template may accept both lvalue and rvalue references usingforwarding reference:template <typename T>void f(T &&t);In this .转载 2021-08-14 17:24:51 · 341 阅读 · 0 评论 -
C++11新特性:enable_shared_from_this
转自:https://blog.csdn.net/caoshangpa/article/details/79392878enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被一个 std::shared_ptr 对象...转载 2020-06-19 19:48:26 · 268 阅读 · 0 评论 -
c++ std::vector 使用Erase–remove idiom删除特定的value
wiki: Erase–remove idiom一般删除vector中的某个值,需要遍历整个vector找到该值的下标再erase.采用erase-remove方式可以避免多次后续元素前移These algorithms do not remove elements from the container, but move all elements thatdon'tfit th...转载 2020-05-08 12:16:26 · 698 阅读 · 0 评论 -
[BlackPearl引擎开发记录 6] --ImGui
完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/1977d59c505868f63f718cb7d8d22c3f5176cd69ImGui selectable 菜单:const char* entityItems[] = { "Empty","PointLight","SpotLight","IronMan","Cube" ...原创 2019-10-30 17:04:03 · 1500 阅读 · 0 评论 -
[BlackPearl引擎开发记录 4] ---dynamic_pointer_cast 必须是多态类才能转换
类之间必须具有多态属性:即至少含有一个虚函数(非析构虚函数)!!错误例子:#include<iostream>#include<memory>#include<vector>#include<string>class Manager{public: Manager(); ~Manager();private:};...原创 2019-10-29 16:57:54 · 268 阅读 · 0 评论 -
c++ learning -- template 泛型编程
参考书籍:effective c++ 条款43面向对象编程:显示接口 + 运行时多态(哪一个virtual函数被绑定 - 发生在运行期)泛型编程 :隐式接口 + 编译时多态 (哪一个重载函数被调用 - 发生在编译期)template注意点1:子类不能顺利的调用模板化基类的函数Example:#include<iostream>class ...原创 2019-10-25 11:12:30 · 294 阅读 · 0 评论 -
c++ learning -- reinterpret_cast类型转换
参考:《More effective c++》条款2reinterpret_cast 用于函数指针类型转换:例子:把 int dosonething()函数指针强制转换为 void (*FuncPtr) :#include <iostream>typedef void(*FuncPtr)();FuncPtr funcArray[10];void x...原创 2019-10-16 19:36:32 · 209 阅读 · 0 评论 -
shared_ptr的线程安全性
shared_ptr的线程安全性shared_ptr的reference count是线程安全的,但是指向的对象不是线程安全的!本文链接:https://blog.csdn.net/D_Guco/article/details/80155323 shared_ptr的出现在某种程度上解放了c++程序员,c++11标准原生的支持了并发编程,在并发编程中shared...转载 2019-08-22 23:52:14 · 5218 阅读 · 0 评论 -
c++左值引用 和 右值引用
#include<iostream>#include<string>#include<vector>using namespace std;class BoVector {public: BoVector(){} BoVector(const BoVector& rhs) { //Copy constructor 深拷贝 c...转载 2019-08-22 19:46:08 · 122 阅读 · 0 评论 -
c++11 -- Initializer_list
类初始化时的构造函数的搜索顺序:#include<initializer_list>#include<iostream>#include<string>class cat{public: cat(int age, std::string name):age(age),name(name) { printf("%d,%s", age, n...原创 2019-09-09 20:33:33 · 210 阅读 · 0 评论 -
effective c++ 条款37 绝不重新定义继承而来的缺省参数值(静态绑定和动态绑定)
对象的静态类型:就是它在程序中被声明时的类型。对象的动态类型:,则是指“目前所指对象的类型”,动态类型可以表现出一个对象将会有什么行为。 静态绑定:又名前期绑定,如缺省参数值绑定。动态绑定:又名后期绑定,如virtual是动态绑定而来,意思是调用一个virtual函数时,究竟调用哪一份函数实现代码,取决与发出调用是那个对象的动态类型。class Shape {...转载 2019-02-26 16:22:42 · 214 阅读 · 0 评论 -
OpenGL 纹理单元 纹理目标 理解 glActiveTexture glBindTexture
可以这样简单的理解为:显卡中有N个纹理单元(具体数目依赖你的显卡能力),每个纹理单元(GL_TEXTURE0、GL_TEXTURE1等)都有GL_TEXTURE_1D、GL_TEXTURE_2D等,如下struct TextureUnit{ GLuint targetTexture1D; GLuint targetTexture2D; GLuint targetTe...转载 2019-09-29 11:07:46 · 875 阅读 · 0 评论 -
LearnOpenGL_study -- 光照贴图
漫反射贴图完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/a9082da982458111eb505a22e92bcb4146bd8ee7在着色器中使用漫反射贴图的方法和纹理教程中是完全一样的。但这次我们会将纹理储存为Material结构体中的一个sampler2D。我们将之前定义的vec3漫反射颜色向量替换为漫反射贴图.st...转载 2019-09-17 19:54:30 · 339 阅读 · 0 评论 -
LearnOpenGL_study -- Material
完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/ed885b25fa4eee4c9e582b8d3c362bf4d6ac6c1d参考:https://learnopengl-cn.github.io/02%20Lighting/03%20Materials/shader:#type vertex#version 330 co...原创 2019-09-16 16:56:43 · 254 阅读 · 0 评论 -
c++ learning -- 函数返回引用
1,当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。比如:const string &shorterString(const string &s1,const string &s2){ return s1.size < s2.size ? s1:s2;}调用函数和返回结果时,都没有复制这些string对象。2,返回引用,要求...转载 2019-09-16 15:04:03 · 151 阅读 · 0 评论 -
c++ learning -- find_first_not_of , find_first_of,string::npos
例子: std::unordered_map<GLenum, std::string> OpenGLShader::PreProcess(const std::string& source) { std::unordered_map<GLenum, std::string> shaderSources; const char* typeToken =...原创 2019-09-16 14:27:38 · 230 阅读 · 0 评论 -
c++ learning -- 引用类型作为成员变量
转自:https://blog.csdn.net/lazyq7/article/details/48186291C++引用引用在定义时必须初始化,否则编译时便会报错。如果类(自定义类型)的成员是引用类型,需要注意一些问题。不能有默认构造函数,必须提供构造函数凡是有引用类型的成员变量的类,不能有缺省构造函数。默认构造函数没有对引用成员提供默认的初始化机制,也因此造成引用未初始化的编译...转载 2019-09-07 16:28:51 · 376 阅读 · 0 评论 -
private protected public Class in C++
转自:https://stackoverflow.com/questions/224966/private-and-protected-members-c解释1:Private members are only accessible within the class defining them.Protected members are accessible in the class ...2018-07-30 11:00:28 · 207 阅读 · 0 评论 -
Cherno c++ learning -- constructor
#include<iostream>class Entity{public: float X,Y; void Print(){ std::cout<<X<<" "<<Y<<std::endl; }};int main(){ Entity e; e.Print(); std::cin.get();}...转载 2019-07-02 20:07:19 · 216 阅读 · 0 评论 -
c++ protected,private.public
转自:https://stackoverflow.com/questions/224966/private-and-protected-members-cPublicmembers of a class A are accessible for all and everyone.Protectedmembers of a class A are not accessible ou...转载 2019-07-03 18:30:02 · 98 阅读 · 0 评论 -
c++ stringstream
转自:http://www.cplusplus.com/reference/sstream/stringstream/str/http://www.cplusplus.com/reference/sstream/stringstream/std::stringstream::strstring str() const;void str (const string& s);...转载 2019-07-03 19:00:10 · 121 阅读 · 0 评论 -
c++ Macros
## 操作符:https://www.cprogramming.com/reference/preprocessor/token-pasting-operator.html## macro operator<token> ## <token>The ## operator takes two separate tokens and pastes th...转载 2019-07-03 20:03:10 · 839 阅读 · 0 评论 -
Cherno c++ learning -- references
references has to reference a already existed variable.1.references不占用memery2.when you decleare a reference ,you have to immediately assign it to somethingint& ref; //error!!3.once you de...转载 2019-07-04 09:41:58 · 277 阅读 · 0 评论 -
Cherno c++ learning -- template
Cherno 视频:https://www.youtube.com/watch?v=I-hZkUa9mIs&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb&index=53template 编译:http://www.voidcn.com/article/p-yvuewxdj-ws.htmltemplate will be evaluated...转载 2019-07-04 10:54:19 · 2126 阅读 · 3 评论 -
Cherno c++ learning -- smart pointer
smart pointer--->When you call new,you don't have to call deleteunique pointer:1.cannot be copied.They have to be unique!比如:两个unique pointer指向同一内存,when one unique pointer die-->it will...转载 2019-07-04 12:42:41 · 228 阅读 · 0 评论 -
指针与数组---Sizeof()
#include<iostream>using namespace std;int Getsize(int data[],int n) { int *data_ptr = data; for(int i=0;i<n;i++) { cout << *data_ptr << endl; data_ptr++; } retu...原创 2019-03-15 14:38:23 · 413 阅读 · 0 评论 -
effective c++ 条款33:避免遮掩继承而来的名字
#include<iostream>using namespace std;class Base{public: virtual void f1() = 0; virtual void f1(int) { cout << "base f1(int)" << endl; }; virtual void f2() { cout <&...转载 2019-02-26 11:36:06 · 126 阅读 · 0 评论 -
c++ explicit关键字
转自:https://blog.csdn.net/qq_37233607/article/details/79051075先看以下代码:#include<iostream>using namespace std;class A{public: A(int i = 5) { m_a = i; }; ~A(); int get_a() { return...转载 2019-02-24 11:12:24 · 148 阅读 · 0 评论 -
Const at the end of a function in C++
转自:https://www.gamedev.net/forums/topic/500734-c-const-after-a-function-declaration/转载 2018-07-30 11:43:46 · 240 阅读 · 0 评论 -
'override' keyword in C++
转自:https://stackoverflow.com/questions/18198314/what-is-the-override-keyword-in-c-used-for转自:https://msdn.microsoft.com/en-us/library/jj678987.aspxThe override keyword serves two purposes: It s...转载 2018-07-30 13:28:25 · 333 阅读 · 0 评论 -
C++多线程编程(一)
转自:http://www.bogotobogo.com/cplusplus/C11/6_C11_Thread_with_Move_Semantics.phpThread with Move Semantics#include<thread>#include<vector>#include<algorithm>#include<casser...转载 2018-08-15 09:18:07 · 957 阅读 · 0 评论 -
C++多线程编程(二)
转自:https://www.youtube.com/watch?v=IBu5ka1MQ7wunique_lock<mutex>、once_flag、call_once// https://www.youtube.com/watch?v=IBu5ka1MQ7w//Lazy Initialization#include<iostream>#include<...转载 2018-08-15 15:16:15 · 927 阅读 · 0 评论 -
mutiple threads----condition variable
reference:http://www.cplusplus.com/reference/condition_variable/condition_variable/A condition variable is an object able to block the calling thread until notified to resumeIt uses a unique_lock ...转载 2018-08-22 10:40:53 · 169 阅读 · 0 评论 -
C++11 lambda
转自:https://www.jianshu.com/p/d686ad9de817lambda表达式最前面的方括号的意义何在?其实这是lambda表达式一个很要的功能,就是闭包。这里我们先讲一下lambda表达式的大致原理:每当你定义一个lambda表达式后,编译器会自动生成一个匿名类(这个类当然重载了()运算符),我们称为闭包类型(closure type)。那么在运行时,这个lambda表...转载 2018-08-21 11:05:08 · 565 阅读 · 0 评论 -
c++11 default和delete
转自:https://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html在函数声明后加 =default 和 =delete。通过将类的特殊成员函数声明为 defaulted 函数,可以显式指定编译器为该函数自动生成默认函数体。通过将函数声明为 deleted 函数,可以禁用某些不期望的转换或者操作符。...转载 2018-08-21 14:24:42 · 409 阅读 · 0 评论 -
线程的join和detach
转自:https://blog.csdn.net/bodogbo11/article/details/8598386在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放...转载 2018-11-25 09:09:00 · 186 阅读 · 0 评论 -
c++ 友元函数
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。 #include<iostream>using namespace std;class INT{public: INT(int i) :m_i(i) {}; ~INT(); friend ostream& operator<<(os...转载 2019-02-23 15:48:30 · 136 阅读 · 0 评论 -
Haxel Engine learning 5 -- precompiled header file
添加precompiled header#pragma once#include<iostream>#include<memory>#include<utility>#include<algorithm>#include<functional>#include<string>#include<v...转载 2019-07-14 14:36:45 · 225 阅读 · 0 评论 -
Haxel Engine learning 6 -- Window Abstraction and GLFW
clone GLFWhttps://github.com/TheCherno/GLFW修改 Hazel/premake5.lua ,使之包括GLFWHazel\Hazel\vendor\GLFW\premake5.lua :project "GLFW" kind "StaticLib" language "C" targetdir...转载 2019-07-14 19:50:27 · 269 阅读 · 0 评论