c++ class类学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fanhansheng/article/details/82384539

1.typename与class的区别

关键字typename被用来作为型别之前的标识符号。

template <class T>
class MyClass{
    typename T::SubType * ptr;
    ...
};
class Q{
    typedef int SubType;
    ...
};
class Q{
    class SubType;
    ...
};

在这里,typename指出SubType是class T中定义的一个类别,因此ptr是一个指向T::SubType型别的指针。如果没有关键字typename,SubType会被当成一个static成员,*会被解释为乘法。

注意,如果要把一个template中的某个标识符号指定为一种型别,就算是意图显而易见,关键字typename也是不能省略的,因此C++的一般规则是,除了使用typename修饰之外,template内的任何标识符号都被视为一个值而不是一个型别。

2.空类调用默认产生的函数

class test

{

  public:

      test(); // 缺省构造函数

      test( const test& ); // 拷贝构造函数

      ~test(); // 析构函数

      test& operator=( const test& ); // 赋值运算符

       test* operator&(); // 取址运算符

       const test* operator&() const; // 取址运算符 const

};

默认构造函数 
析构函数 
拷贝构造函数 
赋值运算符(operator=) 
取址运算符(operator&)(一对,一个非const的,一个const的) 

猜你喜欢

转载自blog.csdn.net/fanhansheng/article/details/82384539
今日推荐