首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

class 基础有关问题

2012-03-05 
class 基础问题1、T是一个class,T ab和 T a ab 有什么不同?2、重载T的赋值操作符时参数和返回值分别是

class 基础问题
1、T是一个class,T a=b;和 T a; a=b; 有什么不同?
2、重载T的赋值操作符时参数和返回值分别是什么?
3、class T1有一个char成员变量,class T2有一个char成员变量还有个void f();成员函数,在4字节对齐的情况下,sizeof(T1)和sizeof(T2)分别是多少?
4、class T
{
public:
void f1(){...}
void f2()const{...}
};
问f1和f2的区别?
请指教,谢谢!

[解决办法]
1、T是一个class,T a=b;和 T a; a=b; 有什么不同?
T a=b,利用b来初始化a,调用拷贝构造函数。
 T a; a=b; 先初始化,调用的是默认构造函数。再赋值。

2、重载T的赋值操作符时参数和返回值分别是什么?
参数为T类的一个实例的引用。
返回值为=号左边的引用。

3、class T1有一个char成员变量,class T2有一个char成员变量还有个void f();成员函数,在4字节对齐的情况下,sizeof(T1)和sizeof(T2)分别是多少?
4,8 //这个我不十分肯定。

4、class T
{
public:
void f1(){...}
void f2()const{...}
};
问f1和f2的区别?
f1内可以改变成员的值,但f2内的不行。



[解决办法]
补充2楼;;;
2)T& operator=(const T& rhs)
{

 ...

 return *this; // 返回左边的对象
详情请看http://topic.csdn.net/u/20080305/18/2d03798c-add0-44ef-a980-8e14d08bd8c2.html
3)只有非静态类成员变量在新生成一个object的时候才需要自己的副本。
所以每个非静态成员变量在生成新object需要内存,而function是不需要的。所以void f()不占内存空间

[解决办法]
补充一下4
const类对象只能调用const成员函数
非const对象两者都可以调用

热点排行