相关疑难解决方法(0)

在 C++ 中将 int 作为 bool 参数传递

有人可以解释一下这段代码中发生了什么:

这里的例子: https : //ideone.com/1cFb4N

#include <iostream>

using namespace std;

class toto
{
public:
    bool b;
    toto(bool x)
    {
        cout<< "constructor bool:" << (x ? "true": "false")<<endl;
        b = x;
    }
    ~toto() {}
};

int main()
{
    toto t = new toto(0);
    cout << "t.b is " << (t.b ? "true": "false")<<endl;
    t = new toto(false);
    cout << "t.b is " << (t.b ? "true": "false")<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

constructor bool:false
constructor bool:true
t.b is true
constructor bool:false
constructor …
Run Code Online (Sandbox Code Playgroud)

c++ constructor pointers boolean implicit-conversion

43
推荐指数
3
解决办法
4420
查看次数

运算符<和>如何使用指针?

只是为了好玩,我有一个std::listconst char*,每个元素都指向一个空结束的文本字符串,并跑了std::list::sort()就可以了.碰巧的是,它(没有双关语意)没有对字符串进行排序.考虑到它正在研究指针,这是有道理的.

根据文档std::list::sort(),它(默认)使用operator <的元件之间的比较.

暂时忘记这个列表,我的实际问题是:这些(>,<,> =,<=)运算符如何处理C++和C中的指针?他们只是比较实际的内存地址吗?

char* p1 = (char*) 0xDAB0BC47;
char* p2 = (char*) 0xBABEC475;
Run Code Online (Sandbox Code Playgroud)

例如,在32位小端系统上,p1> p2因为0xDAB0BC47> 0xBABEC475

测试似乎证实了这一点,但我认为将它放在StackOverflow上以供将来参考是件好事.C和C++都对指针做了一些奇怪的事情,所以你真的不知道......

c c++ comparison pointers operators

11
推荐指数
2
解决办法
7647
查看次数

函数/方法重载C++:数据类型混乱?

我在使用C++重载方法时遇到了一些麻烦.作为问题的一个例子,我有一个类,其中有许多方法被重载,并且每个方法都有一个具有不同数据类型的参数.我的问题:这些方法应该出现在类中的特定顺序,以确保根据其参数数据类型调用正确的方法?

class SomeClass{
    public:
    ...
    void Method(bool paramater);
    void Method(std::string paramater);
    void Method(uint64_t paramater);
    void Method(int64_t paramater);
    void Method(uint8_t paramater);
    void Method(int8_t paramater);
    void Method(float paramater);
    void Method(double paramater);
    void Method(ClassXYZ paramater);
}
Run Code Online (Sandbox Code Playgroud)

我注意到有问题,因为在运行时:

Method("string");
Run Code Online (Sandbox Code Playgroud)

它在呼唤:

Method(bool paramater);
Run Code Online (Sandbox Code Playgroud)

c++ methods types overloading function

9
推荐指数
2
解决办法
4034
查看次数

从const字符串到bool的隐式转换

我有以下代码:

#include <iostream>
#include <string>

void foo(bool a)
{
        std::cout << "bool" << std::endl;
}

void foo(long long int a)
{
        std::cout << "long long int" << std::endl;
}

void foo(const std::string& a)
{
        std::cout << "string" << std::endl;
}

int main(int argc, char* args[])
{
        foo("1");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

执行时我得到这个输出:

bool
Run Code Online (Sandbox Code Playgroud)

我原以为输出:

string
Run Code Online (Sandbox Code Playgroud)

为什么g ++ 4.9隐式将此字符串转换为bool?

c++ g++ g++4.9

5
推荐指数
1
解决办法
1320
查看次数

将 char 转换为 bool(将 bool 传递给 main)

是否有推荐/正确/更安全的方法将 bool 参数传递给您的主函数?

这是

$ ./my_software true
Run Code Online (Sandbox Code Playgroud)

与此为my_software

int main(argc, argv* []){

    bool my_bool = argv[1];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和这个

$ ./my_software 1
Run Code Online (Sandbox Code Playgroud)

与此为my_software

int main(argc, argv* []){

    bool my_bool = atoi(argv[1]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

相等的?我错过了第一个转换吗?

c++ program-entry-point boolean

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