cplusplus_中的一些零碎知识点 (一)

c++ 零碎知识点

namespace 理解

namespace: 用来给类或者函数做区间定义, 从而使编译器能准确定位到适合的类或者函数。

继承

继承机制: 是面向对象程序设计使代码可以复用的最重要的手段。允许在保持原有的特性基础上进行扩展, 增加功能, 产生的类为派生类。

继承方式: public 继承, protected 继承, private 继承。

下图为继承基类成员访问方式的变化:

类成员/继承方式public 继承protected 继承private 继承
基类的 public 成员派生类的 public 成员派生类的 protected 成员派生类的 private 成员
基类的 protected 成员派生类的 protected 成员派生类的 protected 成员派生类的 private 成员
基类的 private 成员在派生类中不可见在派生类中不可见在派生类中不可见

派生类对象可以赋值给基类对象/基类的指针/基类的引用 —— 切片(切割)
基类对象不能赋值给派生类对象
基类的指针可以通过强制类型转换赋值给派生类指针

模板 Template

类模板(也称类属类或类生成类)

类模板定义:
A. 首先定义类, 其格式为:

template <class T>
class foo
{
...
}

在类定义体中, 如采用通用数据类型的成员, 函数参数的前面需加上 T。当中通用类型 T 能够作为普通成员变量的类型, 还能够作为 const 和 static 成员变量以及成员函数的参数和返回类型之用。如:

template<class T>
class Test {
private:
    T n:
    const T i;
    static T cnt;
public:
    Test():i(0) {}
    Test(T k);
    ~Test() {}
    void print();
    T operator+(T x);
}

B. 在类定义体外成员函数时, 若此成员函数中有模板参数存在, 则除了须要和一般类的体外定义成员函数一样的定义外, 还需在函数体外进行模板声明。如:

template<class T>
void Test<T>::print() {
    std::cout<<"n="<<n<<std::endl;
    std::cout<<"i="<<i<<std::endl;
    std::cout<<"cnt="<<cnt<<std::endl
}

template<class T>
Test<T>::Test(T k):i(k){n=k;cnt++;}
template<class T>
T Test<T>::operator+(T x){
               return n + x;
               }

函数模板

函数模板: 用来创建一个通用的函数。以支持多种不同的形象, 避免重载函数的函数体反复设计。最大特点是把函数使用的数据类型作为参数。
声明形式:

template<typename (或 class) T>
<返回类型><函数名>(参数表)
{
    函数体
}

如:

template<typename (或 class) T>
T fuc(T x, T y)
{
    T x;
    //...
}

模板函数

模板函数的生成就是讲函数模板的类型形参实例化的过程。
如:

double fuc(double x, double y)
{
    double x;
    // ...
}

operator(重载符)

operator 和运算符一起使用, 表示一个运算符重载函数,在理解时可将 operator 和运算符(如 operator=)视为一个函数名。目的如下:

  • 使重载后的运算符的使用方法与重载前一致
  • 扩展运算符的功能只能通过函数的方式实现

(operator=): 赋值运算符重载函数

相关博客

c++中namespace的用法理解
c++中的继承
c++中Template的使用
c++:模板总结
c++的重载操作符(operator)介绍
c++中的赋值运算符重载函数(operator=)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值