C++中定义对象的语法,带括号与不带括号有什么区别?

像如下这样的C++类:classMyClass{public:MyClass(){std::cout<<"HelloMyClass!"<<std::endl;}publi... 像如下这样的C++类:
class MyClass
{
public:
MyClass() { std::cout << "Hello MyClass!" << std::endl; }
public:
void MyMethod() { std::cout << "Hello MyMethod!" << std::endl; }
};

如果这样定义对象:MyClass obj; 那么它的构造函数将会被执行,如果调用obj.MyMethod();也会执行正确。
可是如果带有括号:MyClass obj(); 那么它的构造函数不会被执行,调用obj.MyMethod();也会出现语法错误,请问这种语法是把obj定义成什么了?

如果构造函数带有参数,那么必然得带括号,可是如果没有参数,括号为什么必须得省略呢?
展开
 我来答
zhaokun8
2009-09-20 · TA获得超过114个赞
知道答主
回答量:88
采纳率:0%
帮助的人:103万
展开全部
这个算是C++的语法了,记住就行了。另外如果进行动态的堆分配的话是要带括号的,比如 MyClass obj = new MyClass() 不加会报错

这些都算是语法规则,深究没什么意思

另外,刚你问的MyClass obj()把obj定义成什么 从语法上看是定义了一个名为obj,类型为MyClass类(也就是返回值为MyClass类型)的无参数函数。
离离原上花开
2009-09-20 · TA获得超过6856个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:714万
展开全部
MyClass obj,把obj定义成这个类的对象了。
点号(.),是类访问符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aman048
2009-09-20 · TA获得超过235个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:171万
展开全部
给我上了一课,我还不知道有这回事呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式