因此,可以声明匿名类或结构但是如何使它有用?
int main() {
class{
int ClassVal;
};
struct{
short StructVal;
};
StructVal = 5; //StructVal is undefined
ClassVal = 5; //ClassVal is undefined too?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果你把它们都放在主要功能之外,它们也将无法访问.我问的只是因为它在某种程度上有趣:)
编辑:为什么在main函数之外的联合(在全局范围内)必须是静态声明的,例如:
static struct {
int x;
};
int main() {
//...
}
Run Code Online (Sandbox Code Playgroud) 例如,我有200个类(200个标题和200个编译单元)的项目,每个我的类都有成员,其中包含一些字符串,这意味着我必须将STL中的字符串标题包含在每个标题中.
另一方面,我知道在编译单元中我不需要大多数字符串类功能(它是metods等).这意味着我的每个编译单元都包含整个字符串类,但我需要的只是关键字"string".
编译将花费更长的时间!我将编译字符串类200次!
在这种情况下,只使用char关键字或制作一些自定义字符串类,它不会像字符串类那样大吗?
谢谢.
例如:
int* x = new int;
int y = reinterpret_cast<int>(x);
Run Code Online (Sandbox Code Playgroud)
y现在保存变量的内存地址的整数值x.变量y大小int.该int大小是否总是足够大,以存储转换为任何类型的转换后的内存地址int?
编辑:
或者使用更安全,long int以避免可能的数据丢失?
编辑2:对不起的人,为了使这个问题更容易理解,我想在这里找到的是返回的HEX值的大小作为数字,不是int的大小,也不是指向int的指针的大小,而是普通的十六进制值.我需要用人类可读的符号来获得这个价值.这就是我reinterpret_cast用来将内存HEX值转换为DEC值的原因.但是要安全地存储值,我还需要找出它的变量:int,long - 什么类型足够大?
当我们在类中定义运算符函数时,我们也在类中定义了它,那么该函数就不是类的一部分。
但当该函数位于类外部并且我们将其声明为类内部的友元但不定义它时,也会实现相同的任务。
考虑一下这段代码,它有两个相同的运算符定义,其中一个在类内部,另一个在类外部:
版本 1(在类内部)
class MyClass
{
// version 1 inside a class
friend MyClass&& operator +(MyClass& a, MyClass& b)
{
return move(MyClass(a.x + b.x, a.y + b.y));
}
int x,y;
public:
MyClass() {}
MyClass(int,int){}
};
int main()
{
MyClass a, b, c;
c = a + b;
cin.ignore();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
版本 2(在类之外)
class MyClass
{
friend MyClass&& operator +(MyClass& a, MyClass& b);
int x,y;
public:
MyClass() {}
MyClass(int,int){}
};
MyClass&& operator +(MyClass& a, MyClass& b)
{
return …Run Code Online (Sandbox Code Playgroud) 我不像C++那样熟悉C,但我发现自己需要调试C应用程序,甚至成功后,但我不确定我的修复是否确实正确.
这是一个代码:
FcValueList **value = NULL;
value = (FcValueList **) malloc (SIZEOF_VOID_P * nobjs);
// other code...
if (value)
free (value);
Run Code Online (Sandbox Code Playgroud)
所述FcValueList是一个结构和SIZEOF_VOID_P是尺寸void指针的.上面的代码不起作用,因为值 "无法读取内存"
所以我应用了以下修复程序,代码使用app退出0:
value = (FcValueList **) malloc (SIZEOF_VOID_P * nobjs);
// other code...
if (*value)
free (value);
Run Code Online (Sandbox Code Playgroud)
我的修正是否正确?如果不是什么会是正确的呢?