900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java if 三目运算符_if-else和三元运算符的不同行为

java if 三目运算符_if-else和三元运算符的不同行为

时间:2024-03-04 07:24:38

相关推荐

java if 三目运算符_if-else和三元运算符的不同行为

我在VS-SP1中有下面的类,三元运算符和if-else似乎对getname方法下面的代码有不同的工作方式

template class StringBuf{

public:

StringBuf(const char* src){

strcpy(s,src);

}

// Copy from another StringBuf

StringBuf(const StringBuf& src){

strcpy(s,src.get());

}

// String access

operator const char*() const {return get();}

const char* get() const { return s ; }

private:

char s[size];

};

class MyPony{

StringBuf<10> name;

public:

MyPony(char* name_) : name(name_){}

const char* getname(bool bVal){

//if( bVal )

// return name;

//else

// return "Jimmy";

return (bVal==true) ? name : "Jimmy";

}

};

int main(){

MyPony pony("Pani");

const char* getname = pony.getname(true);

return 0;

}

如果我使用三元运算符getname()方法通过调用复制构造函数生成名称的副本,然后在临时副本上调用运算符const char * .

如果我将三元运算符更改为if-else,则代码只调用运算符const char *而不进行临时副本 .

我的理解是,如果else和三元运算符应该表现相同,但为什么这个类的行为不同?有什么东西我可以忽略吗?

对于三元运算符VS似乎直接调用运算符const char * .

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。