如果不定义构造函数,编译器给出的默认构造函数一样么,这时定义的对象怎么赋值?

就是在程序中自己不定义构造函数,编译器会添加一个默认构造函数,这个与编译器有关么?如何给对象赋值?... 就是在程序中自己不定义构造函数,编译器会添加一个默认构造函数,这个与编译器有关么?如何给对象赋值? 展开
 我来答
CodeBlove
2014-04-21 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:245万
展开全部

构造函数是编译器提供的一个接口供程序员选择,在创建对象时按需要初始化成员变量。当然你也可以不通过构造函数初始化,选择在创建对象后,通过公开成员变量由外部程序赋值,或者你也可以编写相应的函数进行赋值,具体怎么做由程序员决定。

 

当没有定义构造函数时,系统提供一个默认构造函数(隐含的),只是为了满足接口需要,不做任何事情。

比如:

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);//或者通过函数设置值
}

 

初始化是否采用构造函数看你需要,如果你的成员变量是个确定值(每个对象都一样),可以将成员变量定义为常量,或者在构造函数中初始化,那么创建对象后,对象的成员变量就自动被赋值,后面赋值语句就不用写了,如果你的成员变量需要在运行时确定,或者每个对象的值不一样,就是值不确定。那么就不使用构造函数,而在需要的时候赋值。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式