c++ bool型函数的调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ bool型函数的调用相关的知识,希望对你有一定的参考价值。

bool is_empty(string &s) return s.empty();

这个函数有什么问题,调用的时候提示 is_empty 不明确。

TimeType ob;

TimeType ob2;

if(ob.Equal(ob2))

cout << "两者相等的结果" << endl;

if(ob.LessThan(ob2))

cout << "ob小于ob2的结果" << endl;

支持继承和重用

在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。

以上内容参考:百度百科-C++

参考技术A #include<stdio.h>#include <string>using namespace std; bool is_empty(string &s)  return s.empty();  int main()     string s("sssssss");    string s2;     if(is_empty(s))  printf("s 是空串\\n");    else printf("string s = %s\\n",s.c_str());     if(is_empty(s2))  printf("s2 是空串\\n");    else printf("string s2 = %s\\n",s2.c_str());     return 0;

结果显示如下:

s = sssssss

s2 is empty

运行结果正常,如果题目出错,可能引用的头文件有问题,或者尝试重新更改一下字符串的名字,看下结果。

扩展资料:

bool型函数指的是返回值为bool类型的函数,其调用方式和int 型函数没有太大的区别。

bool型变量的值只有 真 (true) 和假 (false)。bool可用于定义函数类型为布尔型,函数里可以有 return true; return false 之类的语句。

bool为布尔型用作逻辑判断。

参考技术B

bool型函数指的是返回值为bool类型的函数,其调用方式和int 型函数没有太大的区别。

bool型变量的值只有 真 (true) 和假 (false)。bool可用于定义函数类型为布尔型,函数里可以有 return true; return false 之类的语句。

bool为布尔型用作逻辑判断

BOOL在<windef.h>typedef int BOOL;

在<wtypes.h>typedef long BOOL;

扩展资料

BOOL

    bool表示布尔型变量,也就是逻辑型变量的定义符,以英国数学家、布尔代数的奠基人乔治·布尔(George Boole)命名。bool类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。 在objective-c中提供了相似的类型BOOL,它具有YES值和NO值;在java中则对应于boolean类型。

参考资料:百度百科:BOOL

参考技术C

bool型函数指的是返回值为bool类型的函数,其调用方式和int 型函数没有太大的区别。

bool型变量的值只有 真 (true) 和假 (false)。bool可用于定义函数类型为布尔型,函数里可以有 return true; return false 之类的语句。

bool为布尔型用作逻辑判断

BOOL在<windef.h>typedef int BOOL;

在<wtypes.h>typedef long BOOL;

扩展资料:

bool取值false和true,0为false,非0为true。(例如-1和2都是true)。

如果数个bool对象列在一起,可能会各占一个Byte,这取决于编译器。

BOOL是微软定义的typedef int BOOL(在windef.h中),0为FALSE,1为TRUE。(-1和2既不是TRUE也不是FALSE)。

#ifndef FALSE

#define FALSE 0

#endif

#ifndef TRUE

#define TRUE 1

#endif

布尔型变量bool

布尔型变量的值只有 真 (true) 和假 (false)。

布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。

bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。

参考资料:百度百科:bool函数

参考技术D

我试了一下,很正常啊。


#include<stdio.h>
#include <string>
using namespace std;

bool is_empty(string &s)  return s.empty(); 

int main()
 
    string s("aaaaaaaaa");
    string s2;

    if(is_empty(s))  printf("string s is empty\\n");
    else printf("string s = %s\\n",s.c_str());

    if(is_empty(s2))  printf("string s2 is empty\\n");
    else printf("string s2 = %s\\n",s2.c_str());
  
  return 0;


运行结果:

string s = aaaaaaaaa
string s2 is empty

追问

我用vs2013就会提示这个错误,用VC6.0就没事。

追答

你编译的是上面贴的源码吗?

追问

恩 ,一模一样

本回答被提问者和网友采纳

函数调用之间的 OR 运算符

【中文标题】函数调用之间的 OR 运算符【英文标题】:OR operator between function calls 【发布时间】:2014-07-18 08:24:33 【问题描述】:

两者之间有什么区别:

if (!bool_function()) 
  void_function();

bool_function() || void_function();

除了可读性?

即使第二个函数返回 void,我可以使用第二种形式吗? 如果bool_function 返回true,是否保证在所有基于C 的编程语言(C++、C#、Java)中不会执行void_function

编辑: 我问的原因是因为在我的 C 编译器上什至没有给出任何警告,并且它按预期工作。我正在使用 IAR Embedded Workbench IDE。

【问题讨论】:

这不是有效的 Java,我怀疑它甚至是有效的 C 这不会在 C# 中编译。 bool_function() || void_function(); 不知道C是否支持,但java不支持。布尔表达式的所有组件都必须是布尔值,因此不允许使用 void。 嗯...在 Java 中,您也可以将 || 运算符应用于布尔值,这意味着 bool_function()||void_function() 不会编译,因为 void_funcion() 不会返回 boolean 这是gcc 所说的:error: void value not ignored as it ought to be bool_function() || void_function(); 【参考方案1】:

嗯,是的,第二个没有编译。

你不能 or 一个 bool 和一个 void。

更新:你说你的 C 编译器编译这个并且它工作正常。我对此表示怀疑。也就是说,我确定你的编译器会编译它,但是bool || void 的结果是什么? void 总是正确的吗?总是假的?有时一个,有时另一个?

简而言之 - 不要这样做。使用第一种形式,告诉每个阅读您的代码的人您正在做什么。

【讨论】:

请提供有关“不编译”的更多详细信息。查看我的编辑:它在 C 上运行良好。 @BogdanAlexandru 你确定void_function实际上被定义为返回void吗?如果简单地省略返回类型,则默认为int。 (当然void *void 不同。) @Arkku 无效。编译器设置为 C99,我不确定它到底是什么编译器,它内置在 IAR 中。 @BogdanAlexandru 好的,我无法使用该编译器进行测试,但这绝对是规则的一个例外。顺便说一句,如果您在|| 之后添加演员(void),它仍然有效吗?即boolf() || (void) voidf(); 我忘记了它在 C 标准中的声明位置,但是从 void 转换为其他类型是 未定义的行为,因此不需要是错误。【参考方案2】:

Java specification 表示如果左侧表达式为真,则不计算右侧表达式。 C# 似乎也是如此。如果您查看 C 和 C++ 规范,大概他们会说同样的话。

【讨论】:

如果整个表达式未编译,则不会计算右侧表达式。这不是合法的 Java、C++ 或 C# 代码。它可能是合法的 C,尽管我怀疑它是合法的 C99。【参考方案3】:

如果没有编译错误,我认为它们是相同的。这种现象就是所谓的短路评估

bool_function() || void_function();

如果 bool_function 返回非零值,则无论 void_function() 是否返回,值或 OR 逻辑评估都将为 TRUE,因此它将跳过执行后面的函数。

并非所有语言都描述了这一特性,尤其是一些脚本语言。 短路评估增加了编译器实现的复杂性。

【讨论】:

以上是关于c++ bool型函数的调用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 C++ 中调用原始类型的构造函数是合法的?

函数调用之间的 OR 运算符

在 C++ 中调用指向成员函数的指针时出错

c语言中有bool类型吗?

C++ 类函数分组

Visual C++ 2010 接受字符串作为重载函数中的 bool