在A类成员中添加另一个B类的对象时,不可以在A类初始化的时候给B的一个成员赋值吗
#include <iostream>using namespace std;
class Phone{
public:
Phone(string Name){
cout<<"Phone的构造函数调用" <<endl;
m_Pname = Name;
}
string m_Pname;
};
class Person
{
public:
Person(string pname,string Pname)
{ //这里报错了
m_Pname = pname;
m_Phone.m_Pname = Pname; //不可以在Person类初始化的时候给Phone的一个成员m_Pname赋值吗
}
string m_Name;
Phone m_Phone;
};
void test01(){
Person p1("XXX","Iphone 12 pro max");
cout<<"姓名:"<<p1.m_Name<<endl;
cout<<"所用手机:"<<p1.m_Phone.m_Pname<<endl;
}
int main(){
test01();
system("pause");
return 0;
} 17 2 D:\学习\C++\未命名2.cpp no matching function for call to 'Phone::Phone()' 报错原因如上 两个问题,给你写了注释
#include <iostream>
using namespace std;
class Phone{
public:
Phone(string Name){
cout<<"Phone的构造函数调用" <<endl;
m_Pname = Name;
}
Phone(){}//第二、你在class Person中第20行写的形式这里需要有这个默认构造函数否则就会出错。
string m_Pname;
};
class Person
{
public:
Person(string pname,string Pname)
{ //这里报错了
m_Name = pname; //第一、这里拼写错误
m_Phone.m_Pname = Pname; //不可以在Person类初始化的时候给Phone的一个成员m_Pname赋值吗
}
string m_Name;
Phone m_Phone;
};
void test01(){
Person p1("XXX","Iphone 12 pro max");
cout<<"姓名:"<<p1.m_Name<<endl;
cout<<"所用手机:"<<p1.m_Phone.m_Pname<<endl;
}
int main(){
test01();
system("pause");
return 0;
} #include <iostream>
using namespace std;
class Phone {
public:
Phone(string Name) {
cout << "Phone的构造函数调用" << endl;
m_Pname = Name;
}
string m_Pname;
};
class Person
{
public:
string m_Name;
Phone m_Phone;
Person(string pname, string Pname) :m_Phone(Phone(Pname)) {
m_Name = pname;
}
};
void test01() {
Person p1("XXX", "Iphone 12 pro max");
cout << "姓名:" << p1.m_Name << endl;
cout << "所用手机:" << p1.m_Phone.m_Pname << endl;
}
int main() {
test01();
system("pause");
return 0;
} sunrise085 发表于 2020-11-7 17:30
两个问题,给你写了注释
我懂了,写了有参构造以后不提供默认构造 ,编译器在一个类里创建另一个类对象的时候会报错,对吗 Ryan_Li 发表于 2020-11-9 14:06
我懂了,写了有参构造以后不提供默认构造 ,编译器在一个类里创建另一个类对象的时候会报错,对吗
差不多是这个意思。前半句是对的,后半句不对。
没有了默认构造函数,并不是不能在一个类中创建另一个类的对象,而是不能像你写的那样创建另一个类的对象了。创建类对象就必须有对应的参数,可以像三楼那样写。 sunrise085 发表于 2020-11-9 14:41
差不多是这个意思。前半句是对的,后半句不对。
没有了默认构造函数,并不是不能在一个类中创建另一个类 ...
谢谢啦!!
页:
[1]