类的初始化问题

时间:2021-12-05 17:27:47
class member
{
int i,j,k;
public:
member(int x=0)
{
i=j=k=x;
cout<<"member"<<i<<" \n"<<endl;
}
~member()
{
cout<<"~member"<<i<<" \n"<<endl;
}
};
class withMembers
{
   //   member Q(1),R(2),S(3);   //error
        member Q,R,S;            //right
int i;
public:
withMembers(int I):i(I){cout<<"withMembrs"<<endl;}
~withMembers()
{
cout<<"~withMembers"<<endl;
}

};
int main(int argc, char* argv[])
{
   withMembers WM(1);
}
执行以上代码为什么类中member Q,R,S;可以执行!而换成类中的member Q(1),R(2),S(3);提示错误。
如果我把member Q(1),R(2),S(3);放入main执行正确呢。谢谢!!


9 个解决方案

#1


类成员禁止在声明的时候进行初始化
所以,你的   member Q(1),R(2),S(3);  写public:
你可以这样写你的构造函数
withMembers(int I):i(I),Q(1),R(2),S(3){cout<<"withMembrs"<<endl;}

#2


因为在类的定义时不可以初始化数据,如果非要初始化的话,可以在构造函数的初始化列表里完成
withMembers():Q(1),R(2),S(3)

#3


happy__888([顾问团]寻开心) 动作好快呀

#4


类里不能初始化对象。
类只是个用于定义实例模板,不带动作的。动作都在函数中。
可以放到构造函数中。

#5


来完了,UP

#6


不是类里的数据成员不能进行初始化,而是不能为类里的数据成员提供初始化值(只有整型static const成员例外)。类在实例化时,如果它的数据成员是一个类类型,在创建它时当然要调用默认构造函数对其进行初始化。

#7


可以通过构造函数来对保证类的每个对象都被初始化,如果一个类有构造函数,编译器在创建对象时就自动调用这个函数.

#8


class withMembers
{
   //   member Q(1),R(2),S(3);   //error

syntax error

#9


up

#1


类成员禁止在声明的时候进行初始化
所以,你的   member Q(1),R(2),S(3);  写public:
你可以这样写你的构造函数
withMembers(int I):i(I),Q(1),R(2),S(3){cout<<"withMembrs"<<endl;}

#2


因为在类的定义时不可以初始化数据,如果非要初始化的话,可以在构造函数的初始化列表里完成
withMembers():Q(1),R(2),S(3)

#3


happy__888([顾问团]寻开心) 动作好快呀

#4


类里不能初始化对象。
类只是个用于定义实例模板,不带动作的。动作都在函数中。
可以放到构造函数中。

#5


来完了,UP

#6


不是类里的数据成员不能进行初始化,而是不能为类里的数据成员提供初始化值(只有整型static const成员例外)。类在实例化时,如果它的数据成员是一个类类型,在创建它时当然要调用默认构造函数对其进行初始化。

#7


可以通过构造函数来对保证类的每个对象都被初始化,如果一个类有构造函数,编译器在创建对象时就自动调用这个函数.

#8


class withMembers
{
   //   member Q(1),R(2),S(3);   //error

syntax error

#9


up