关于C++的初始化与赋值
在构造函数体内的“=”都是属于赋值,而不是初始化,如果要初始化,就只能利用初始化列表,这句话对吗?各位,谢啦~~~~(希望讲解详细)...
在构造函数体内的“=”都是属于赋值,而不是初始化,如果要初始化,就只能利用初始化列表,这句话对吗?各位,谢啦~~~~(希望讲解详细)
展开
4个回答
展开全部
确实是这个样子的.不过所谓初始化毕竟本身也可以理解为在变量使用之前进行适当的处理,所以在构造函数内用赋值来改变那些平常的变量可以认为是初始化.C++中事实上 =只能在变量声明时进行初始化,但是它的类特性偏偏又不允许在类体的成员变量声明中直接初始化(如果这样,代码本身就会非常不容易读),所以就创立了初始化列表这种东西.必须这样的,哈哈.但是,对于像static 还有const这群变量,必须在声明时进行初始化,所以就要特殊对待,在类体外要static const int Student::a=1;这样子
展开全部
楼主,你好!
这里希望楼主希望你有几个概念:
一.构造函数
函数创建时会调用函数,其作用一般是对类的变量进行初始化.
二."="是赋值,这是一个操作符.而初始化是第一次被赋值.是一种操作手段.
在构造函数中初始化(或叫做对变量进行赋初值)时.可以采取两种方法:
1,在构造函数体内,即楼主所说的方式
2,在初始化列表中,见楼主理解.
这两种都是初始化变量的手段
举例:
.h文件中
class LouZhu {
public:
LouZhu();
char name[64];
};
.cpp中
LouZhu::LouZhu():name("Baund")//初始化
{
strcpy(name,"Baund Two"); //使用该值已经
}
希望对楼主会有帮助!
这里希望楼主希望你有几个概念:
一.构造函数
函数创建时会调用函数,其作用一般是对类的变量进行初始化.
二."="是赋值,这是一个操作符.而初始化是第一次被赋值.是一种操作手段.
在构造函数中初始化(或叫做对变量进行赋初值)时.可以采取两种方法:
1,在构造函数体内,即楼主所说的方式
2,在初始化列表中,见楼主理解.
这两种都是初始化变量的手段
举例:
.h文件中
class LouZhu {
public:
LouZhu();
char name[64];
};
.cpp中
LouZhu::LouZhu():name("Baund")//初始化
{
strcpy(name,"Baund Two"); //使用该值已经
}
希望对楼主会有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造函数是用来保证初始化类中的成员变量的初值的,以保证每个对象的数据成员都有合适的初始值,当类的对象被创建时就会调用构造函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该说初始化有两种方式:
1、利用初始化列表进行初始化,即:
Object::Object(int _x, int _y):x(_x),y(_y){}这种方式。
2、在构造函数体内进行初始化:即
Object::Object(int _x, int _y)
{
x = _x;
y = _y;
}
后一种方式的‘=’相当于调用了赋值运算符,因此效率不如前一种高。
利用初始化列表不是初始化的唯一方式。
补充下,有三种方式必须用初始化列表:
class Member
{
public:
Member(int _x) { this->x = _x; }
private:
int x;
};
class Class
{
private:
Member member; //当成员是一个类的对象的时候
const int a; //当成员是const时
int& b; //当成员是引用类型时
public:
Class(int _x, int _a, int _b):member(_x),a(_a),b(_b){}
};
1、利用初始化列表进行初始化,即:
Object::Object(int _x, int _y):x(_x),y(_y){}这种方式。
2、在构造函数体内进行初始化:即
Object::Object(int _x, int _y)
{
x = _x;
y = _y;
}
后一种方式的‘=’相当于调用了赋值运算符,因此效率不如前一种高。
利用初始化列表不是初始化的唯一方式。
补充下,有三种方式必须用初始化列表:
class Member
{
public:
Member(int _x) { this->x = _x; }
private:
int x;
};
class Class
{
private:
Member member; //当成员是一个类的对象的时候
const int a; //当成员是const时
int& b; //当成员是引用类型时
public:
Class(int _x, int _a, int _b):member(_x),a(_a),b(_b){}
};
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询