嗯,这可能听起来像一个巨魔问题,但由于C++似乎很难完全掌握(我从来没有真正知道STL实际上是它的"部分"),我想知道在不依赖时使用C而不是C++有什么缺点在OOP上.
C++有时候会有非常复杂的语法,这在我尝试使用OGRE3D时会让我感到困惑......
我不太了解RAM和HDD架构,或者电子如何处理内存块,但这总是引起我的好奇心:为什么我们选择停在8位以获得计算机值中的最小元素?
我的问题可能看起来很愚蠢,因为答案很明显,但我不太确定......
是因为2 ^ 3允许它在寻址内存时非常适合吗?电子产品是否专门设计用于存储8位块?如果是,为什么不使用更广泛的词?这是因为它除了32,64和128,所以处理器的单词可以给出几个单词?这么小的空间有256个值是否方便?
你怎么看 ?
我的问题有点过于形而上学,但我想确保这只是一个历史原因,而不是技术或数学原因.
对于这个轶事,我也在考虑ASCII标准,其中大多数首字母对UTF-8这样的东西都没用,我也试着想一些更简单快速的字符编码......
2 ^ 64离我的ram /硬盘可以处理的"无限"还有一段距离......
首先我想知道GMP如何与内存/处理器一起工作,因为它做了一些阴暗的优化......
我还想知道是否有一种方法可以在任意数量的字节上存储一个整数(无符号,更容易).例如,在50个字节上,我的上限为2 ^ 400 -1.要做的是使用携带以保持数字从一个字节到另一个字节保持一致,我对此有一些了解,但我真的不确定它是最快的方法.我甚至不确定我是否正确.
我猜GMP使用这种方式来存储它的数据,但我只想要一些(甚至很少)解释或某些理论转发(我没有任何博士学位,所以不要太难).
这是一些C++代码:
#include <iostream>
using namespace std;
class m
{
public:
m() { cout << "mother" << endl; }
};
class n : m
{
public:
n() { cout << "daughter" << endl; }
};
int main()
{
m M;
n N;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
mother
mother
daughter
Run Code Online (Sandbox Code Playgroud)
我的问题是我不想在创建N时调用m的构造函数.我该怎么办?
我的问题主要是关于STL而不是C++的其他部分可以比较(我猜)和C一样快,只要每个角都不使用类.
STL是游戏和OGRE3D等引擎的标准,但我想知道如果STL的功能很好用,问题是虽然我真的不知道它们是如何工作的,但我应该先知道在使用之前哪些功能会导致严重的生猪他们.
我很兴奋开始那个游戏编程学校,显然我不会不使用这些高级功能.
我在学校"学习"了C++,但有几件我不知道的事情,比如编译器可以优化的地方或内容,似乎我已经知道了,inline
并且const
可以提升一点......
如果性能是一个重要的东西(例如游戏编程),那么放置类属性不是public
(private
或protected
)允许编译器制作更优化的代码吗?
因为我之前的所有老师都在说它更"安全"或"防止不想要或授权的类访问/行为",但最后,我想知道放置属性是否public
可以限制范围,从而加固事物.
我不批评我的老师(我应该),但我所在的编程班不是很先进......
我正在使用GCC +终端来制作一个素数数组.
我曾经问过#C@irc.freenode.net,但我仍然不明白:
int可以存储32位的值(所以总共有2 ^ 32个唯一值),但是数组的值不能超过2 ^ 24个值?
我不确定,但为什么24位寄存器?已经回答了我的问题?
这是否意味着制作一个数组long int
并不能解决问题?是否有一些(按比例快速)的方式我可以绕过这个,比如使用int[][]
存储这些数字?或者也许是一个include或lib来使用任意数量的字节来存储数字?
int main()
{
int array1[160000];
printf("first array declared fine.\n");
int array2[170000];
int array3[1600000];
printf("first array declared fine.\n");
int array4[1700000];
int array5[16000000];
printf("first array declared fine.\n");
int array6[17000000];
}
Run Code Online (Sandbox Code Playgroud)