小编Naw*_*waz的帖子

比较:界面方法与虚拟方法与抽象方法

每种方法的优点和缺点是什么?

  • 界面方法
  • 虚拟方法
  • 抽象方法

什么时候应该选择什么?做出这个决定时应该记住哪些要点?

c# virtual interface abstract

48
推荐指数
1
解决办法
2万
查看次数

什么是视图引擎?它实际上做了什么?

我开始学习ASP.NET MVC3.

因此,在阅读在线和书籍教程时,我经常遇到这个术语"视图引擎".我不知道它是什么.

它实际上做了什么?

为什么这对我来说很重要?

c# asp.net asp.net-mvc viewengine

47
推荐指数
3
解决办法
5万
查看次数

为什么我们不能通过值传递数组?

显然,我们可以将复杂的类实例传递给函数,但为什么我们不能将数组传递给函数呢?

c++ arrays arguments function

45
推荐指数
4
解决办法
4万
查看次数

这个const不是自动冗余吗?

我在Stroustrup的一本书中找到了这段代码:

void print_book(const vector<Entry>& book)
{
     for (const auto& x : book) // for "auto" see §1.5
           cout << x << '\n';
}
Run Code Online (Sandbox Code Playgroud)

const似乎是多余的,因为x会被推断为一个const_iterator,因为bookconst在参数.是const auto真的更好吗?

c++ const

45
推荐指数
4
解决办法
3371
查看次数

如果我在构造函数中写return语句怎么办?

如果我在构造函数中写return语句怎么办?它符合标准吗?

struct A
{ 
     A() { return; } 
};
Run Code Online (Sandbox Code Playgroud)

上面的代码编译正常,在ideone上没有任何错误.但是以下代码不会:

struct A
{ 
   A() { return 100; } 
};
Run Code Online (Sandbox Code Playgroud)

它在ideone上给出了这个错误:

错误:从构造函数返回一个值

我理解从构造函数返回值根本没有意义,因为它没有明确提到返回类型,并且我们毕竟不能存储返回的值.但我很想知道:

  • 来自C++标准的哪个声明允许第一个例子,但禁止第二个例子?有没有明确的陈述?
  • 是第一个例子中的返回类型void吗?
  • 是否有任何隐式返回类型?

c++ constructor return return-type return-value

44
推荐指数
2
解决办法
5万
查看次数

在C#中,Expression API比Reflection更好

如今,我正在探索C#Expression API.所以我可以使用一些帮助来理解它是如何工作的,包括Expression和Reflection之间的区别.我还想了解表达式是否仅仅是语法糖,还是它们确实比反射性能更好?

很好的例子以及与好文章的链接将不胜感激.:-)

.net c# reflection expression

43
推荐指数
1
解决办法
1万
查看次数

为什么要上课{int i; }; 是不是完全符合标准?

这是一个后续问题.

在上一个问题中,@ JohannesSchaub-litb表示以下代码完全符合标准:

class { int i; };  //unnamed-class definition. § 9/1 allows this!
Run Code Online (Sandbox Code Playgroud)

然后他补充道,

虽然它在语法上是有效的,但它违反了这样一个规则,即这样的类必须在其封闭范围内声明至少一个名称.

我真的不明白这一点.他在说什么名字?

任何人都可以进一步详细说明(最好引用标准)?

c++ class definition standards-compliance identifier

43
推荐指数
4
解决办法
2455
查看次数

我们可以在数据绑定中连接两个属性吗?

我们可以在绑定表达式中将两个属性连接起来吗?如果可能没有转换器或没有编写两个文本块并单独设置它们?

wpf silverlight-4.0

41
推荐指数
5
解决办法
4万
查看次数

当两个链接的static_cast可以完成它的工作时,为什么我们在C++中使用reinterpret_cast?

说我想投A*,char*反之亦然,我们有两个选择(我的意思是,我们很多人认为我们有两个选择,因为两者似乎都有效!因此混乱!):

struct A
{
    int age;
    char name[128];
};

A a;
char *buffer = static_cast<char*>(static_cast<void*>(&a)); //choice 1
char *buffer = reinterpret_cast<char*>(&a); //choice 2
Run Code Online (Sandbox Code Playgroud)

两者都很好.

//convert back
A *pA = static_cast<A*>(static_cast<void*>(buffer)); //choice 1
A *pA = reinterpret_cast<A*>(buffer); //choice 2
Run Code Online (Sandbox Code Playgroud)

即便这样工作正常!

那么,为什么我们reinterpret_cast在C++中有两个链接 static_cast可以完成它的工作呢?

你们中的一些人可能认为这个主题与之前的主题重复,例如本文底部列出的,但事实并非如此.这些主题讨论只在理论上,但他们没有给出甚至一个例子来展示为什么reintepret_cast是真正需要的,而2 static_cast肯定会失败.我同意,一个static_cast会失败.但两个怎么样?

如果两个链接的语法static_cast看起来很麻烦,那么我们可以编写一个函数模板,使其对程序员更友好:

template<class To, class From>
To any_cast(From v)
{
    return static_cast<To>(static_cast<void*>(v));
}
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用它,如:

char *buffer = any_cast<char*>(&a); …
Run Code Online (Sandbox Code Playgroud)

c++ casting static-cast reinterpret-cast

40
推荐指数
4
解决办法
6926
查看次数

迭代器的类型:输出与输入与前向与随机访问迭代器

C++ STL中有多少种类型的迭代器?截至目前,我知道这些:

  • 输出迭代器
  • 输入迭代器
  • 转发迭代器
  • 随机访问迭代器

还有更多吗?它们之间有什么区别?每个的限制和特征是什么?使用哪种类型?

c++ iterator stl

38
推荐指数
3
解决办法
2万
查看次数