用C++定义一个人员类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C++定义一个人员类相关的知识,希望对你有一定的参考价值。
Person,它有姓名、性别、身份证号、出生日期等信息,同时拥有
能够显示和设置这些信息的函数;从
Person类派生出学生类
Student和教师类
Teacher,学
生类有学号、年级、班级等信息,教师类有职称等信息;再从
Student和
Teacher类派生出
在职学习的教师类
StuTeacher。以上类中的信息采用动态内存分配存储的方法,要在构造函
数里分配存储空间,要有析构函数释放空间,要有拷贝构造函数实现深拷贝。在类的继承关
系中要合理利用虚拟继承避免二义性问题,要在派生类中重写基类中继承来的成员函数。类
中的其它内容自行设计,编写测试代码使用这些类。
~LinkedStack()makeEmpty();
void Push(const T&x);
bool Pop(T&x);
bool getTop(T&x)const;
bool IsEmpty()constreturn (top==NULL)?true:false;
int getSize()const;
void makeEmpty();
friend ostream&operator<<(ostream&os,LinkedStack<T>&s);
private:
LinkedNode<T>*top;
;本回答被提问者采纳 参考技术B create proc pp
@a int,@b nvarchar(50)
as
declare @id int
select @id=b from 表2 where 2=@a
update 表1
set 2=@id
where 3=@a and 其他条件=@b
执行传参
exec pp '1','aaa'
C++中关于类对象的初始化问题
类中定义的其他类的对象没用到也要初始化吗?
初始化时必须用初始化列表吗?
初始化列表和直接赋值有什么本质区别?
是,初始化不是赋值,所以你想初始化而不是赋值的话就要用member initialization list而不是operator =。
区别:
clas A
public:
A();
A(int const _id, string const& _name, string const& _address);
private:
int id;
string name;
string address;
;
A::A(int const _id, string const& _name, string const& _address)
id = _id;
name = _name;
address = _address;
使用复制赋值操作符来“初始化”成员是所谓的“伪初始化”。在上面的过程中,在进入A()的函数体之前,name和address就已经分别调用了它们各自的默认构造函数一次,而在A()的函数体中它们又再次调用自己的operator = 来进行赋值。对内置类型来说则没有这个过程,所以对于内置类型,使用初始化成员列表或在构造函数体内对其进行赋值没什么大的区别。
A::A(int const _id, string const& _name, string const& _address)
: id(_id), name(_name), address(_address)
这一次name和address就只分别调用了它们各自的复制构造函数一次,而免去了多余了那一次对operator = 的调用,对于非内置类型来说,这就大大提高了对象的初始化效率。同样对于内置类型来说这没有什么大的不同,但为了保持一致性,通常最好的做法就是也把它们放在初始化成员列表中进行初始化。
另外 = 操作符所表示的意思也不总是赋值,在对象定义声明时使用操作符 = 对象调用的就是其复制构造函数而不是operator = :
int main()
A a(1000, "Stanly", "WestRoadNo.12345"), b;
b = a; // 这是operator =
A c = b; // 这是A(const A& _A)
参考技术A 不是
不是
不建议使用初始化列表
因为很多编译器在内部实现有差别 参考技术B 是
不是
本质没有什么区别吧,就运行的速度问题。。。
以上是关于用C++定义一个人员类的主要内容,如果未能解决你的问题,请参考以下文章