
C++
文章平均质量分 94
ZJU_fish1996
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[引擎开发] 深入C++拷贝控制
C++作为引擎开发的常用语言,是因为它的设计更加面向底层,我们有更多的控制内存的手段,以获得高性能的程序。这种控制内存的手段不仅体现在对内存分配管理上,也体现在内存的拷贝控制上。这意味着,为了编写高性能的代码,我们不仅需要关注逻辑的正确性,还需要对每条逻辑下发生了哪种情况的拷贝有着比较明确的认知。变量的初始化什么是变量的初始化?它是指对象在创建时,被赋予了一个特定的值。 C++中有两组不应混淆的概念,一组是声明和定义,另一组就...原创 2022-02-13 22:42:16 · 5869 阅读 · 1 评论 -
[C++] 对象属性的自动序列化与反序列化
对于一个有着多个属性的类对象而言,我们通常希望能够对其进行序列化与反序列化,以保存和导入我们记录下来的物体数据。编写这样的代码通常是繁琐的,并且会带来大量冗余。 目标 我们期望能够达到这样的效果,在类中声明变量的时候,能够自动注册相关的信息。在序列化和反序列化的过程中,该变量的值就会自动被解析,而无需额外的编码。 这意味着,我们的代码...原创 2019-10-20 17:29:00 · 1313 阅读 · 2 评论 -
[Qt C++] 基于反射生成UI
效果演示 本次所做的工作主要是,由于物体属性的UI控件基本就那么几种类型,所以可以将UI生成、事件绑定等基本代码通过宏的形式来自动生成,可以减少开发时的编码量,达到快速迭代开发的目的。如上图右侧的面板,均通过半自动化生成。 得到上图最右边所示界面,仍然需要一些代码,但主要是描述内容性质的代码,如下: // .h ...原创 2019-03-23 23:41:09 · 1306 阅读 · 0 评论 -
[C++] 共享智能指针探究
概念引入 在C++应用中,野指针是一件非常令人头痛的事情。它的发生往往是因为引用了已经被删除的指针。也就是像这样:int* a = new int(1);delete a;cout << *a << endl; 当然,上例的错误非常明显,一般除了笔误,我们很少遇到这样的问题。更为常见的是,某个类A需要以指针的形式引用某个...原创 2019-03-09 21:36:26 · 670 阅读 · 0 评论 -
[C++] 根据字符串自动构造对应类
问题的起因是,我在做一个demo,有一个对象基类,以及一堆派生出的子对象,比如球体、立方体之类的对象。还有一个对象管理类,用于存储场景中的所有对象。那么在初始化的时候,代码是这么写的:class ObjectInfo{private: vector<Object*> vecObjs;public: void Init() { vector<strin...原创 2019-01-17 22:06:24 · 2814 阅读 · 1 评论 -
[C++] 公开课全套笔记
这套笔记是我去年刚接触C++时整理的笔记,有几课的内容没有记录。希望能给初学C++的你带来一些帮助。 FM是浙大很棒的老师,虽然我OOP没能选上他的课,但是好在有公开课可以弥补一下遗憾(ง •̀_•́)ง课程地址:http://study.163.com/course/courseMain.htm?courseId=271005 怎样能开始写原创 2016-08-12 21:11:29 · 6637 阅读 · 0 评论 -
[C++] 经典练习题与解析(二)
(11)#include struct A { A() { std::cout << "A"; }};struct B { B() { std::cout << "B"; }};class C {public: C() : a(), b() {}private: B b; A a;};int main(){ C();}答案:翻译 2016-08-14 00:31:08 · 5595 阅读 · 0 评论 -
[C++] 经典练习题与解析(一)
reference:(1)#include void f(int) { std::cout << 1; }void f(unsigned) { std::cout << 2; }int main() { f(-2.5);}答案:编译错误 这个重载是不明确的,为什么呢? 对于f(-2.5),有两个可以调用的函数,为了让翻译 2016-08-05 19:02:13 · 3172 阅读 · 0 评论 -
异质链表(C++实现)
list.h#ifndef _LIST_H#define _LIST_H#include#includeusing namespace std;class Base {public: virtual ostream& printData(ostream&) = 0; friend ostream& operator << (ostream& out, Base* p);原创 2016-03-10 10:10:08 · 4705 阅读 · 0 评论 -
异质链表(C语言实现)
用C语言实现多态性的基本思想是使用void*指针,在存储链表结点值的时候将地址存入。 也就是说结点中存储的值并不是具体的值,而是一个地址,由于这个地址是main中的本地变量,所以不用担心它会被摧毁。 在读取的时候,进行强制类型转换即可。 在老师布置异质链表作业的时候,参考了网上很多代码,基本上都是通过传入类型,再在函数内部进行链表创建。这样的写法对于main函数依赖很大,无法实现原创 2015-11-11 22:32:44 · 8926 阅读 · 7 评论 -
c++分数类
以下这个代码是将头文件、对应的实现文件和main.cpp放在一起的,只要稍微改一下预处理指令就能拆成三部分。 #include#includeclass fraction{private: int numerator;//分子 int denominator;//分母 int gcd(int x,int y)const;//最大公约数 int lcm(int x,int原创 2015-11-12 10:26:49 · 9681 阅读 · 0 评论