
C++入门漫长路
文章平均质量分 78
alegriabaile
这个作者很懒,什么都没留下…
展开
-
静态库的使用之防止代码拷贝
项目场景抽象:在实际项目中,有一个工程的类依赖比较奇怪,这边简单抽象一下:一共有三个工程:静态库MyLib.lib:里面定义了一个AA类;动态库MyDll.dll:里面导出了一个BB类;可执行程序main.exe:windows控制台可执行程序,直接使用了AA类和BB类。问题分析那么问题来了,p1和p2是一个值吗?由于当时实际项目中使用时,当时的AA类并未在内存中保存状态,再加上自己也比较菜,所以半知半解地就没当回事。但是最近刷到其他人也遇到这个问题,所以直接将当时的猜想验证一下。基础原创 2022-04-05 22:45:36 · 791 阅读 · 0 评论 -
修改const变量,与编译器优化问题
普通const变量在C++中为不可修改的;但是只是在编译器编译的过程中会有提示;通过地址间接进行修改const的值会怎样? const long i1 = 5; long i2 = 10; long i3 = 20; long *i4 = &i2; i4 = i4 - 8; *i4 = 9;这样改,编译器会报错吗?不会。编译器编译通过,并且能正常跑。那么,问题来了,i1的值会变成9吗?来cout一下: std::cout <&l原创 2020-11-26 22:28:38 · 664 阅读 · 0 评论 -
虚函数、虚表的生成,虚表的修改
接上文。虚函数、虚表在没有实例的情况下是无法从语法层面进行访问的。那么其到底有没有生成呢?#include<iostream>using namespace std;class A{private: int x; long long xy; int y;public: virtual void f1(void) { ...原创 2019-08-31 23:05:40 · 1379 阅读 · 0 评论 -
虚函数表到底在哪?
每次被问到虚表在哪都感觉自己答错了,真的难受。Ubuntu18+Clion默认编译器,64位机器测试。#include<iostream>#include <vector>#include <string>#include <algorithm>using namespace std;class A{private: ...原创 2019-08-30 22:03:18 · 1244 阅读 · 0 评论 -
构造函数执行顺序
父类-> 类成员变量(按申明的前后顺序) -> 自己析构相反。class A1{public: A1(){ cout<<"A1 construct"<<endl; } ~A1(){ cout<<"A1 deconstruct"<<endl; }};class A...原创 2019-07-25 17:43:59 · 269 阅读 · 0 评论 -
运算符重载"++"
最初以为运算符重载没什么地方会用到,无奈随着接触到的东西越多,运算符重载反而出现地越来越多。运算符重载一般有两种形式:1. 类的成员函数形式;2. 类的友元函数形式。个人感觉实现为类的成员函数形式更好,因为感觉更“安全”。而被重载的运算符中,单目运算符"++"、"--"有前置、后置之分:后置:m++、m--;前置:++m、--m。前置同普通重原创 2017-09-06 14:16:38 · 593 阅读 · 1 评论 -
XNA数学库_矩阵变换Demo_MatrixTrans
基于DirectX11的3D图形程序设计案例教程——重庆大学出版社第三章 XNA数学库MatrixTrans#include#include#includeusing namespace std;//重载"<<",cout<<(XMVECTOR)ostream & operator <<(ostream& os, XMVECTOR u){ os << "("转载 2017-09-06 12:48:54 · 561 阅读 · 0 评论 -
C++模板中的typename的两种用法
typename与class在模板参数中的使用是一样,如:template<typename T>class A{};与template<class T>class A{};是一样的。但是typename还有一个作用,就是当模板中出现typedef时,而typedef的内容还依赖于模板参数时,如下:template<typename T>class Temp{public: typ原创 2017-08-25 17:34:26 · 1822 阅读 · 0 评论 -
(VS2010)MFC程序中F5后有些断点无效
在学习MFC的过程中,将断点设置在主类的构造函数上时,一直无法停下来,然而在里面加了死循环后,确实有效,说明构造函数是执行了的。CClientApp::CClientApp(){ // 支持重新启动管理器 m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; //while(1);原创 2017-07-19 12:47:48 · 860 阅读 · 0 评论 -
VS2017 Windows10 MFC rcdll.dll
最近去官网下载了VS2017Community版本,用起来是真的舒服;然而偶然想新建MFC工程时发现没有这个选项,然后百度,发现要手动勾选;然后更新后再新建,发现:然后又是百度,Stackoverflow,发现基本上解决方案都是停留在Windows7或者VS2010上,于是自己用资源管理器找了一下rcdll.dll,发现,发现,发现,C:\Program Files (x86)\Windows Ki原创 2017-07-17 23:52:38 · 2375 阅读 · 0 评论 -
(VS2010) ”C++ error C2572: 重定义默认参数“ 错误
C++中,类成员的声明与定义有时会遇到默认参数,此时如果在声明与定义中都加上了默认参数,编译器编译时便会报错。如下://.h中class Ssock{public: Ssock(); int Cbind(ULONG Csockipaddr =inet_addr("127.0.0.1"), USHORT Csockport=htons(1234));}//.cpp中int原创 2017-07-12 16:45:37 · 3649 阅读 · 1 评论