读书人

C++定义一个对象有几种形式?该如何处

发布时间: 2012-06-14 16:00:31 作者: rapoo

C++定义一个对象有几种形式?
一个类A,如果要定义一个对象,是不是可以用以下几种形式:
class A
{
public:
A() {cout<<"constructor1";}
A(int x) {cout<<"constructor2";}
};

1. A a;
2. A a(1);
3. A *a=new A; //equal A *a=new A()
4. A *a=new A(1);
5. A a=10;

A a()这个应该只是一个声明,没有定义,不会调用构造函数。
A a=new A()这个应该是java中的定义形式把。

请指正.

[解决办法]
A a()是一个函数声明,不是对象定义。

不要说 A a= new A()是java中的定义形式,C++出现可比java早多了,是java学C++的
[解决办法]
A a();是声明一个返回A类对象的无参函数;
A a = new A();这个在C++语言中一般是不对的,除非A类有一个non-explicit的参数类型为A*的构造函数。

读书人网 >C++

热点推荐