
C++
铁锈_
游戏码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++对象模型
原文: https://www.cnblogs.com/HelloGreen/p/12641645.html 简单对象模型: 为所有成员建立一个Slot,也就是一个指针,让这个指针指向数据 在简单对象模型下,因为类的函数成员,数据成员都没有直接放到对象模型中(放入的是指向成员的指针),因此可以解决“因menbers不同因而需要不同的存储空间”(没明白书上这句话的意思)的问题。 优点:简单 缺点: 每增加一个成员,对象模型就得增加一个指针,内存与成员数量成线性关系 每次访问member,都需要转载 2020-06-14 16:57:46 · 240 阅读 · 0 评论 -
c++类型转换 简单实例
// 类型转换.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> using namespace std; class A { public: int i; //构造函数使用explicit修饰,显式转换 explicit A(int _i):i(_i) { cout ...原创 2020-05-05 11:16:34 · 192 阅读 · 0 评论 -
使用struct完成一个可变长数组
《c++深度探索对象模型》 P20: c++中凡是处于同一个access section(访问区段,也就是private,public这些)中的数据,必定保证以声明顺序出现在内存布局当中。但是多个access section中的各笔数据,排列顺序就不一定了。 对于从c发展来的结构体,除了与类在默认访问权限上不同,内存布局上也存在区别。对于struct,是按照声明顺序来存放数据的。 可以利用这...原创 2020-04-19 23:19:27 · 865 阅读 · 0 评论 -
仿指针类与仿函数类
一个类,如果它的对象使用时像是指针,或者函数那么这个类就是一个仿指针类与仿函数类。 原理分析: 在使用指针时,我们使用的运算符通常是*, &, ->。 对于函数我们使用的是函数调用运算符,也就是( ) 因此要使得一个类像指针,那么类内重载指针所使用的运算符不就行了。 同理,要使得类像一个函数,那么类内重载函数调用符就行了。 仿指针类: 智能指针: 一个...原创 2019-08-14 23:40:18 · 304 阅读 · 0 评论 -
复习C++
很多东西长时间没用,写点东西加强下。 0.数组名不是指针 谭浩强的书上说过数组名是数组首元素地址,而指针的值是地址,所以说数组名不是指针。 指针又叫指针变量,指针的值是地址,指针可以修改从而指向其他空间。 而C++中的数组名是不可修改的右值,它就不是个指针,这点记住了!!! 参考:https://www.cnblogs.com/xiehongfeng100/p/4684825.html ...原创 2019-06-24 17:31:40 · 145 阅读 · 0 评论 -
协变与逆变的简要说明
在看C#的时候看到了协变与逆变,百度一下发现原来C++, java里早就有了协变与逆变. 首先说明协变与逆变的含义: 逆变与协变用来描述类型转换(type transformation)后的继承关系,其定义:如果A、B表示类型,f(⋅)表示类型转换,≤表示继承关系(比如,A≤B表示A是由B派生出来的子类)f(⋅)是逆变(contravariant)的,当A≤B时有f(B)≤f(A)成立;f(⋅...原创 2019-03-31 14:52:27 · 5082 阅读 · 1 评论 -
c++列表初始化(转自cppreference)
列表初始化 (C++11 起) C++ C++ 语言 初始化 从花括号初始化器列表初始化对象 语法 直接列表初始化 T object { arg1, arg2, ... }; (1) T { arg1, arg2, ... }; (2) new T { arg1, arg2, ... } (...转载 2018-09-16 15:58:05 · 1348 阅读 · 0 评论 -
C++11 左值、右值、右值引用详解(转载)
原链接:https://blog.youkuaiyun.com/hyman_yx/article/details/52044632 左值、右值 在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&...转载 2018-09-16 09:18:57 · 320 阅读 · 0 评论 -
友元函数初探
C++Primer 上写道: 类可以允许其他类或者函数访问它的非共成员,方法是另其他类或者函数成为它的友元。 想把类或者函数作为它的友元,只需增加一条以friend为关键字的开始的函数声明语句。 例如: #include #include using namespace std; class Sales_data { public: int data ; cons原创 2017-10-23 16:18:53 · 225 阅读 · 0 评论 -
友元类初探
一个类如果指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员。 #include #include using namespace std; class Sales_data { friend class Sub; public: Sales_data(int i):data(i){} int data; const static int sd = 100;原创 2017-10-23 17:12:20 · 177 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2017-10-13 12:51:35 · 174 阅读 · 0 评论