编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:    Password: 
  登记 登记    
 重要的C ++缺失了一些重要的
指数 -> 编程,C ++ -> C ++教程
转到页面 1, 2, 3   下一个
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
WTD.




 邮政 发布: Sun 2016年7月16日10:12 AM  帖子主题:重要的C ++缺失一些重要的东西

另一种语言比较。我要看一些你应该意识到的东西,并欣赏C ++缺乏;非常重要的东西。

在C ++中,我们可以创建具有默认值的参数的函数。但是,如果我们希望在函数的主体中做不同的事情,请根据所提供的参数是否调用了该函数,我们必须完全避免使用该功能,而是使用函数重载。

我们不能依赖于测试,看看提供的参数是否等于该参数的默认值。使用该函数的程序员可能会显式调用该值。

具有讽刺意味的是,这是一种提供更大功能的旧语言。让我们比较一些常见的LISP和C ++。

代码:
空虚()
{
   cout << "I'll have to assume: \"bar\"" << endl;
}

空虚(string bar)
{
   cout << bar << endl;
}


代码:
(defun foo (&optional (bar "bar" bar-p))
   (if bar-p
       (format t "我必须假设"~A\"~%" bar)
       (format t "~A~%" bar)))
赞助
赞助
 赞助
 赞助
空值




 邮政 发布: 太阳2007年1月14日9:15 PM  帖子主题:RE:重要的C ++缺失的东西

WTD,请不要误解以下内容。我很佩服您花费这么多时间帮助新手,通常是这些论坛上的一个伟大的知识渊博的人。

我只是厌倦了这些“为什么这种语言更好,然后那个”主题。
它变老了,我认为这不属于C ++教程部分。

没有冒犯。  微笑
克莱顿




 邮政 发布: 孙1月14日2007年10:08 PM  帖子主题:RE:重要的C ++缺失的东西

如果你不能忍受,那么不要读它们。我发现这些非常有用。即使我从未用语言编码任何编码,我也总是发现新的东西。因为并非所有语言都强大在同一领域,那么有些人对某些语言更好的东西。如果你有问题,那么我猜你是溶胶。
WTD.




 邮政 发布: Sun 1月14日,2007年10:24 PM  帖子主题:RE:重要的C ++缺失的东西

这不是“语言x比语言y更好”问题。比较和对比语言可以更好地了解所有涉及的语言,并且更大了解一种语言使得可以编写更好的代码。
R.3Volved.




 邮政 发布: Sun 1月14日,2007年10:53 PM  帖子主题:RE:重要的C ++缺失的东西

你能详细说明你正在尝试遇到的点吗?
我不知道Lisp,我不确定你想在这里展示什么......

依据逐行做什么是什么?
WTD.




 邮政 发布: 孙1月14日2007年11:59下午11:59  帖子主题:RE:重要的C ++缺失的东西

在C ++中,可以为参数提供默认值。但是,没有办法辨别用户是否在调用它时实际提供的值,或者如果它们依赖于默认值。即使使用Sentinel值,也无法完成。

结果是在这种情况下,我们回到过载方法。

在常见的LISP代码中,我们说功能foo有一个参数栏。该参数具有“栏”的默认值。但是,我们还有酒吧P,这是一个布尔。如果用户呼叫:

代码:
(foo)


然后酒吧p是假的。

如果我们打电话:

代码:
(foo some-value)


然后酒吧p是真的。
克莱顿




 邮政 发布: 2007年1月15日12:04 AM  帖子主题:RE:重要的C ++缺失的东西

那么,程序如何辨别要打印?
cr




 邮政 发布: 2007年1月15日星期八:上午11:10  帖子主题:RE:重要的C ++缺失的东西

好奇地,为什么要关心用户提供了一个值,或者倒回默认值?只要有值在那里,它不应该反映你的代码中的问题。

也许这只是我从未遇到过这样的情况。
赞助
赞助
 赞助
 赞助
克莱顿




 邮政 发布: 2007年1月15日星期一上午11:46  帖子主题:RE:重要的C ++缺失的东西

(我认为)WTD在这里尝试遇到什么是,如果您只有一个参数,并且您将其设置为默认值,那么在没有参数传递它时调用该函数真的没有点。相反,您超载功能,以便您可以在没有参数的情况下调用它。但是,在常见的LISP中,您可以在或没有参数调用它,并且它将弄清楚否定是否在默认值上,并相应行动。这基本上是一个干燥的问题。
R.3Volved.




 邮政 发布: 2007年1月15日12:47 PM  帖子主题:RE:重要的C ++缺失的东西

我认为,使用默认值(或理想地默认为常量以摆脱任何硬编码值),我会用C ++带走同样的事情

代码:

const String default_bar ="bar";
......
空虚(字符串栏= default_bar)
{
   if( bar == DEFAULT_BAR ) cout << "I'll have to assume: ";
   cout << bar << endl;
}
WTD.




 邮政 发布: 2007年1月15日1:45 PM  帖子主题:RE:重要的C ++缺失的东西

如果用户实际明确呼叫何种程度:

代码:
Foo ("bar")


 微笑
R.3Volved.




 邮政 发布: 2007年1月15日2:14 PM  帖子主题:RE:重要的C ++缺失的东西

在这种情况下,我会比较指针地址而不是比较字符串

代码:

const字符串* default_bar ="bar";
......
空虚(String * bar = default_bar)
{
   if( bar == DEFAULT_BAR ) cout << "I'll have to assume: ";
   cout << *bar << endl;
}
WTD.




 邮政 发布: 2007年1月15日2:45 PM  帖子主题:RE:重要的C ++缺失的东西

关于一个像整数值的东西,哪个不是指针?  微笑
R.3Volved.




 邮政 发布: 2007年1月15日星期一3:05 PM  帖子主题:RE:重要的C ++缺失的东西

嗯,我看到了......如果你尽可能的一般,这里的复杂性就会变得相得到一点。

所以在你的LISP代码中,它无关紧要什么样的数据类型您传递给该功能?
lisp是否使用与c ++相同的数据类型,或者更像是php datatype ??

我的第一个想法将是模板函数,但这需要默认值根据数据类型而更改...但是如果您传递一个整数,那么无论如何它都可以等于您的常量字符串,为什么不转换为字符串指针或通过字符串引用传递。

我猜在这种情况下,如果您只输出变量,如果您实际上是依赖于DataType的数据,则我可以看到问题。

但是,我很肯定一点点模板元编程可以绕过这个问题,但它会悲伤地需要一些非常复杂的编码确定模板中的类型和值。更不用说它可能只在最新的VC ++编译器上编译(我不知道如何捕获GCC在模板上)
克莱顿




 邮政 发布: 2007年1月15日星期八3:49  帖子主题:RE:重要的C ++缺失的东西

这将我们带到了目前正在尝试的原始帖子制作。 C ++缺少这种非常重要的能力。
从上一个显示帖子:   
    指数 -> 编程,C ++ -> C ++教程
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

13  [ 34 Posts ]
转到页面 1, 2, 3   下一个
跳到:    


Style:  
搜索: