main方法中不能直接实例化内部类

文章是学习和记录,部分摘取其他文章。仅供参考。

由于静态方法不依赖于任何对象所以是没有this关键字的

 

静态内部类,不需要外部类引用就可以直接创建。

 

在非静态内部类中不能用static修饰方法,因为static方法只能在static或顶级类型中声明,就是说static修饰方法只能在静态内部类和外部类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I.引言 在Basic(俺的入门语言),Pascal等语言都提供了定长字符串型,各有特色,Basic的 是长度固定,超出截断,不足补空格;;pascal的是最大长度限制在某个范围. 虽然定长字符串有这样那样的缺点(例如长度有限,弄不好会丢失数据;;) 定长字符串还是有一定的好处,主要是: 1.不分配在堆上,从而不会造成内存碎片 2.静态分配内存,分配速度快 因此我写了一个定长字符串,用作轻量级的字符串.似于pascal的定长字符串,也采用也采取饱和的方式来处理溢出. II.简介 主要有: 1. template<;typename T,typename Traits=std::char_traits<;T>; >; class basic_small_string_base;; 这是定长字符串的基,适用于各种字符型,当然也支持";火星人的三字节字符";. 模板的代码主要实现在该.该是抽象,不能实例化. 2. template<;typename T, size_t MaxSize, typename Traits=std::char_traits<;T>; >; class basic_small_string;; // : public basic_small_string_base<;T,Traits>; 特定长度的定长字符串模板.如果C++标准支持模板typedef的话,下面的4的俩就不用再写了,遗憾的是还不支持,所以他也是抽象.//其实做成可实例化也没任何问题。 3. typedef basic_small_string_base<;char, std::char_traits<;char>; >; small_string_base;; typedef basic_small_string_base<;wchar_t, std::char_traits<;wchar_t>; >; small_wstring_base;; 针对char和wchar_t(我特讨厌这后面的_t这根尾巴)两种字符型的基的和默认traits 的typedef.写函数参数型的时候可以少写几个字, ^=^ 4. template <;size_t MaxSize, typename Traits=std::char_traits<;char>; >; class small_string;; // : public basic_small_string<;char, MaxSize,Traits>; 这是定长字符串的基,适用于各种字符型,当然也支持";火星人的三字节字符";. 模板的代码主要实现在该.该是抽象,不能实例化. 2. template<;typename T, size_t MaxSize, typename Traits=std::char_traits<;T>; >; class basic_small_string;; // : public basic_small_string_base<;T,Traits>; 特定长度的定长字符串模板.如果C++标准支持模板typedef的话,下面的4的俩就不用 再写了,遗憾的是还不支持,所以他也是抽象.//其实做成可实例化也没任何问题。 3. typedef basic_small_string_base<;char, std::char_traits<;char>; >; small_string_base;; typedef basic_small_string_base<;wchar_t, std::char_traits<;wchar_t>; >; small_wstring_base;; 针对char和wchar_t(我特讨厌这后面的_t这根尾巴)两种字符型的基的和默认traits 的typedef.写函数参数型的时候可以少写几个字, ^=^ 4. template <;size_t MaxSize, typename Traits=std::char_traits<;char>; >; class small_string;; // : public basic_small_string<;char, MaxSize,Traits>; template <;size_t MaxSize, typename Traits=std::char_traits<;wchar_t>; >; class small_wstring;; // : public basic_small_string<;char, MaxSize, Traits>; 真正能实例化的ANSI和WCHAR版本的定长字符串. III.用法 该模板用法和std::string一样,可以参考它的文档.另外为了兼容std::basic_string<;>;, 还提供了和std::string搭配的一些额外功能,比如函数的字符串参数都支持 std::basic_string.可以与std::basic_string<;>;进行比较,转换,连接等. 1. 包含头文件 #include";small_string.hpp"; 2.引入cfc命名空间 using namespace;; // 可以略去 3.实例化对象 cfc::small_string<;16>; s=";hello";;; // 一个缓冲区长度为16的定长字符串,内容为";hello"; // 最大长度为15,而不是16,注意! 作局部变量时效率上基本上等于 char s[]=";hello";;;低于char *s=";hello";;;原因很简单. 可以和std::string协同操作: std::string s3 = s;; s = s3;; 4.作为函数参数 作为非模板函数的参数传递时,参数的型应该写成cfc::small_string_base&或者 cfc::small_wstring_base& ,根据需要,可以加上const: void foo(cfc::small_string_base& str) { str=";hello";;; } int main() { cfc::small_string<;32>; s;; foo(s);; } 其他插入,比较,删除等操作跟std::string一样 IV.实现 利用模板的最大缓冲区长度参数,实例化模板,把缓冲区作为数组直接建立在对象的内部. 为了减少代码膨胀,大部分功能都移入基. V.结尾. 由于时间仓促,经历有限,经验不足,缺点错误肯定不少,欢迎大家批评指正. 谢谢!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值