专注于c++

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  21 Posts :: 0 Stories :: 4 Comments :: 0 Trackbacks

常用链接

留言簿(15)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

 

1、 如何使用无参构造函数初始化?

aClass obj();   //error,不能加括号

aClass obj;

2、声明为引用的数据成员和const数据成员必须采用成员初始化列表进行初始化。

3、类与const

const成员函数定义:在该函数中不改变调用他的对象的值。

eg: void Func() const;

const成员函数可重载,根据对象是否是const来决定调用。

构造函数和析构函数不能声明为const

const数据成员 必须在构造函数初始化列表中被初始化。

eg: class test

{

test(int i):data(i) {}

……

private:

    const int data;

}

注:const对象的“常量性质”在从构造函数完成对象初始化 对象析构函数被调用结束这个过程之间一直保持。

 

static成员函数不能声明为constconst指示函数不能修改它操作的对象的内容,但static成员函数独立于类的任何对象。

 

不一致使用const

 

void Func2(int a[])

{

……

}

void Func1(const int a[])

{

     Func2(a); //Error,不能将const修改为非constFunc2参数也该声明为const

……

} void Func2()vo

 

4、友元friend,原型在类定义内出现,但友元不是成员函数,privateprotected等与友元无关,因此可以放在类的任何地方。

5、在派生类的构造函数的初始化列表中初始化成员、调用基类的构造函数,可以防止重复初始化。

6、若一个类中含virtual函数,则该类的析构函数应该为virtual

 

7、重载复数类的+运算符。

 

Complex operator + (const Complex& x,const Complex& y)

{

       return (a,b);   //此语句调用下面的构造函数

}

 

Complex::Complex(const Complex& x,const Comolex& y)

         :real(x.real+y.real),imag(x.img+y.img)

{

}

 

7、临时对象

class X

{……};

 

X x1(100);   //只有它不会产生临时对象,只有1个构造函数被调用

X x2=X(100);

X x3=100;

 

 

8、多重继承

继承关系如下图

Employee

Employer

Worker

Manager

Engineer

产生二义性:如

 Engineer   eng;

 eng.Worker::Sex=0;

 eng.Manager::Sex=1;

解决方法:使用虚基类

   class Worker:public virtual Employee

{

};

 

class Manager:public virtual Employer

{

};

类之间的关系如下图所示:

Employer

Worker

Manager

Engineer

不过这样还是存在问题的,这是c++自身所决定的。

posted on 2009-09-30 16:19 bellgrade 阅读(261) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理