怎么解释像int(a);这样的变量定义

awl005 2014-03-24 09:47:15

#include <iostream>
using namespace std;
class T
{
public:
void show(){ cout<<"ABCDEFG\n"; }
};
int main()
{
T(t); //怎样解释这个,我以为编译器调用复制构造函数,然后说找不到t, 结果却是定义了个t
t.show();
int(a); //基本类型也可以
a=333;
cout<<a<<endl;
return 0;
}
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-03-24
  • 打赏
  • 举报
回复
这里括号好像是作为算术优先级的概念用的。 比如 int (((a))); // 这也是完全没问题的
心是菩提树 2014-03-24
  • 打赏
  • 举报
回复
引用 楼主 awl005 的回复:

#include <iostream>
using namespace std;
class T
{
public:
	void show(){ cout<<"ABCDEFG\n"; }
};
int main()
{
	T(t);   //怎样解释这个,我以为编译器调用复制构造函数,然后说找不到t,   结果却是定义了个t
	t.show();
	int(a);  //基本类型也可以
	a=333;
	cout<<a<<endl;	
	return 0;
}
这个第一次见,一般来讲T(t)这种定义属于定义了一个匿名对象,你应该无法使用;关于int(a),编译器会默认去掉你加的括号,好像effective STL里有讲到这个
awl005 2014-03-24
  • 打赏
  • 举报
回复
引用 2 楼 mougaidong 的回复:
把括号去掉你能明白吗? T t; int a;
对呀,就这么简单啊。真没意思,缺心眼啊
sduxiaoxiang 2014-03-24
  • 打赏
  • 举报
回复
比较别扭的写法
waterSStreaming 2014-03-24
  • 打赏
  • 举报
回复
类型的构造函数的一种形式,相当于

T t;
int a;
turing-complete 2014-03-24
  • 打赏
  • 举报
回复
把括号去掉你能明白吗? T t; int a;
ouyh12345 2014-03-24
  • 打赏
  • 举报
回复
定义一个无名变量并初始化

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧