如果不定义构造函数,编译器给出的默认构造函数一样么,这时定义的对象怎么赋值?
就是在程序中自己不定义构造函数,编译器会添加一个默认构造函数,这个与编译器有关么?如何给对象赋值?...
就是在程序中自己不定义构造函数,编译器会添加一个默认构造函数,这个与编译器有关么?如何给对象赋值?
展开
展开全部
构造函数是编译器提供的一个接口供程序员选择,在创建对象时按需要初始化成员变量。当然你也可以不通过构造函数初始化,选择在创建对象后,通过公开成员变量由外部程序赋值,或者你也可以编写相应的函数进行赋值,具体怎么做由程序员决定。
当没有定义构造函数时,系统提供一个默认构造函数(隐含的),只是为了满足接口需要,不做任何事情。
比如:
class MyClass
{
//MyClass()//无参构造函数,你可以不用
//MyClass(const MyClass &other )//拷贝构造函数,你可以不用
public:
int nValue;//你可以选择公开成员变量
void SetValue(int val)//也可以定义设置函数
{
nValue=val;
}
}
//那么
void main()
{
MyClass A;
A.nValue=10;//创建对象后设置值
A.SetValue(10);//或者通过函数设置值
}
初始化是否采用构造函数看你需要,如果你的成员变量是个确定值(每个对象都一样),可以将成员变量定义为常量,或者在构造函数中初始化,那么创建对象后,对象的成员变量就自动被赋值,后面赋值语句就不用写了,如果你的成员变量需要在运行时确定,或者每个对象的值不一样,就是值不确定。那么就不使用构造函数,而在需要的时候赋值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询