c++动态创建类对象问题
Node*add=newNode(A),两个问题1、如果A是另外一个类的对象,是先调用对象A的构造函数,还是直接调用Node的构造函数2、如果A只是一个类型的值,是直接调...
Node *add=new Node(A),两个问题1、如果A是另外一个类的对象,是先调用对象A的构造函数,还是直接调用Node的构造函数2、如果A只是一个类型的值,是直接调用Node的构造函数吗?
展开
1个回答
展开全部
new Node(A)调用哪个构造函数,取决于A的类型,如果存在对应类型或可以隐式转换成对应类型的构造函数,则调用它;如果不存在,则编译错误。
A是int则调用Node(int),A是double则调用Node(double),A是Foobar类对象则调用Node(Foobar),A是Node类对象则调用拷贝构造函数Node(const Node&)。
传递给构造函数的对象A必然已经存在,故“调用对象A的构造函数”这种情况不可能出现,构造函数用于且仅能用于构造一个新对象。
A是int则调用Node(int),A是double则调用Node(double),A是Foobar类对象则调用Node(Foobar),A是Node类对象则调用拷贝构造函数Node(const Node&)。
传递给构造函数的对象A必然已经存在,故“调用对象A的构造函数”这种情况不可能出现,构造函数用于且仅能用于构造一个新对象。
更多追问追答
追问
比如 Node的构造函数如下:Node(int n,double i):a=n,b=i{}。
对象A构造函数如下:abb(double f):c(f){},
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询