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定义成什么了?
如果构造函数带有参数,那么必然得带括号,可是如果没有参数,括号为什么必须得省略呢? 展开
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定义成什么了?
如果构造函数带有参数,那么必然得带括号,可是如果没有参数,括号为什么必须得省略呢? 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询