当一个文本通过一个成员函数传递给构造函数时,为什么这个值没有分配给类的成员? 我是C++初学者。我在做建筑工人。我正在写一个简单的火车票预订程序。这是我的密码: #include <iostream> #include <stdlib.h> using namespace std; class Ticket { char* name; long PNR; Ticket(char *pname, long pnr):name(pname),PNR(pnr) { } public: Ticket() { name = NULL; PNR=0; } void booking() { char *n; n= new char[25]; cout << "Enter Your Name: "; cin >> n; Ticket(n,12345); cout << "Your Ticket is Booked." << endl; } void status() { long num; cout << "Enter PNR: "; cin >> num; if (num == PNR) cout << "Ticket is confirmed" << endl; else cout << "Ticket is not confirmed" << endl; } void print() { cout << "Your PNR is " << PNR << endl; cout << "The PNR is alloted to " << name << endl; } }; using namespace std; int main() { int option; Ticket pass1; book: cout << "Select an option: " << endl; cout << "1. Booking\t2. Status\t3.Print Info" << endl; cin >> option; switch(option) { case 1: pass1.booking(); break; case 2: pass1.status(); break; case 3: pass1.print(); break; default: cout << "Invalid Entry. Exiting" << endl; break; } cout << "Do you want to check another ticket?" << endl; cout <<"1. Yes\t2. No" << endl; cin >> option; switch(option) { case 1: goto book; break; case 2: default: cout << "Exiting" << endl; exit(0); } return 0; } #包括 #包括 使用名称空间std; 班票 { 字符*名称; 长PNR; 票证(字符*pname,长pnr):名称(pname),pnr(pnr) { } 公众: 票() { name=NULL; PNR=0; } 无效预订() { 字符*n; n=新字符[25]; cout>n; 车票(n,12345); 库特
不重新调用当前元素的构造函数,它会创建一个临时的当一个文本通过一个成员函数传递给构造函数时,为什么这个值没有分配给类的成员? 我是C++初学者。我在做建筑工人。我正在写一个简单的火车票预订程序。这是我的密码: #include <iostream> #include <stdlib.h> using namespace std; class Ticket { char* name; long PNR; Ticket(char *pname, long pnr):name(pname),PNR(pnr) { } public: Ticket() { name = NULL; PNR=0; } void booking() { char *n; n= new char[25]; cout << "Enter Your Name: "; cin >> n; Ticket(n,12345); cout << "Your Ticket is Booked." << endl; } void status() { long num; cout << "Enter PNR: "; cin >> num; if (num == PNR) cout << "Ticket is confirmed" << endl; else cout << "Ticket is not confirmed" << endl; } void print() { cout << "Your PNR is " << PNR << endl; cout << "The PNR is alloted to " << name << endl; } }; using namespace std; int main() { int option; Ticket pass1; book: cout << "Select an option: " << endl; cout << "1. Booking\t2. Status\t3.Print Info" << endl; cin >> option; switch(option) { case 1: pass1.booking(); break; case 2: pass1.status(); break; case 3: pass1.print(); break; default: cout << "Invalid Entry. Exiting" << endl; break; } cout << "Do you want to check another ticket?" << endl; cout <<"1. Yes\t2. No" << endl; cin >> option; switch(option) { case 1: goto book; break; case 2: default: cout << "Exiting" << endl; exit(0); } return 0; } #包括 #包括 使用名称空间std; 班票 { 字符*名称; 长PNR; 票证(字符*pname,长pnr):名称(pname),pnr(pnr) { } 公众: 票() { name=NULL; PNR=0; } 无效预订() { 字符*n; n=新字符[25]; cout>n; 车票(n,12345); 库特,c++,class,constructor,member-functions,function-call,C++,Class,Constructor,Member Functions,Function Call,不重新调用当前元素的构造函数,它会创建一个临时的票证,并用(n,12345)初始化,然后立即丢弃它 通常,只能构造一次对象。构造完成后,不能再次调用该对象的构造函数 相反,您可以使用成员变量的名称为其赋值: void booking() { PNR = 42; // This will change the member PNR of the current instance // ... } 不重新调用当前元素的构造函数,它会创建一个临时的票证,并用(n,12345)初始化
票证,并用(n,12345)
初始化,然后立即丢弃它
通常,只能构造一次对象。构造完成后,不能再次调用该对象的构造函数
相反,您可以使用成员变量的名称为其赋值:
void booking() {
PNR = 42; // This will change the member PNR of the current instance
// ...
}
不重新调用当前元素的构造函数,它会创建一个临时的票证,并用(n,12345)
初始化,然后立即丢弃它
通常,只能构造一次对象。构造完成后,不能再次调用该对象的构造函数
相反,您可以使用成员变量的名称为其赋值:
void booking() {
PNR = 42; // This will change the member PNR of the current instance
// ...
}
Ticket(n,12345);
正在创建一个临时Ticket
,然后将其丢弃。它不会为当前Ticket
设置成员变量。要设置变量booking()
,如下所示
void booking()
{
name = new int[25]
cout << "Enter Your Name: ";
cin >> name;
PNR = 12345;
cout << "Your Ticket is Booked." << endl;
}
void booking()
{
名称=新整数[25]
姓名;
PNR=12345;
coutTicket(n,12345);
正在创建一个临时Ticket
,然后将其丢弃。它不会为当前Ticket
设置成员变量。要设置变量booking()
应该如下所示
void booking()
{
name = new int[25]
cout << "Enter Your Name: ";
cin >> name;
PNR = 12345;
cout << "Your Ticket is Booked." << endl;
}
void booking()
{
名称=新整数[25]
姓名;
PNR=12345;
初学者须知:1.获得一本好书2.避免新建/删除(如果没有,请严格配对)您没有传递字符串文字。您传递的是指向可修改的char
缓冲区的指针。此外,多次调用booking
将导致内存泄漏。您应该使用std::string
,这不仅是内存泄漏问题,而且您不会将自己的名称长度限制为24个字符(加上终止空值)如果你使用std::getline(cin,string_var);
请摆脱那种可怕的goto
调用。初学者注意:1.获得一本好书2.避免新建/删除(如果没有,请严格配对)您没有传递字符串文字。您传递的是指向可修改的char
缓冲区的指针。此外,多次调用booking
将导致内存泄漏。您应该使用std::string
,这不仅是内存泄漏问题,而且您不会将自己的名称长度限制为24个字符(加上终止null)如果您使用std::getline(cin,string_var)
,请摆脱那可怕的goto
调用。