C++primer读书笔记9-转换和类类型】的更多相关文章

有时指定自己的类类型来表示某些类型的数据,如SmallInt,然后在为了便于计算将指定一个转换算,类类型,在某些情况下,自己主动转换为指定的类型 <1>转换操作符 operator type(); 转换功能必须是一个类的成员函数,你不能指定返回类型.形參列表必须为空,而且通常不应该改变转换对象.所以操作符通常定义为const成员. #include <iostream> using namespace std; class SmallInt { public: SmallInt(i…
重载运算符和转换 --转换与类类型[上] 引言: 在前面我们提到过:能够用一个实參调用的位 unsignedchar 相同范围的值,即:0到255. 这个类能够捕获下溢和上溢错误,因此使用起来比内置unsignedchar 更安全. 我们希望这个类定义unsignedchar 支持的全部操作.详细而言,我们想定义5个算术操作符(+.-.*./.%)及其相应的复合赋值操作符,4个关系操作符(<.<=.>.>=),以及相等操作符(==.!=).显然,须要定义16个操作符.支持混合类型表…
SQL 横转竖 .竖专横 (转载)   普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74 84 94 张三 74 83 93 ------------------- */ create table tb(姓名 varchar(10) , 课程 varchar(10)…
第十一章 使用类 1.操作符函数的格式:operator op(argument-list).op是将要重载的操作符. 2.操作符重载函数的两种调用方式:①函数表示法:C=A.operator+(B);A.B.C都是类对:②操作符表示法:C=A+ B:操作符左侧的对象A是调用对象,操作符右边的对象B是作为参数被传递的对象. 3.不要返回指向局部变量或临时对象的引用,函数执行完毕后,局部变量和临时对象将消失,引用将指向不存在的数据. 4.C++对用户定义的操作符重载的限制:①重载的操作符不必是成员…
原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习.   1.HTML -- 见我前面文章 2.Internet 了解 http 请求和响应的循环 --- 见我前面文章 3.java      Reflection 和 Introspection     反射和内省     内省(IntroSpector)是Java语言对JavaBean 类属性.事件的一种缺省处理方法. 例如类A中有属性name, 那我们…
C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型的存储空间大小(指用了表示该类型的二进制位数)依机器而定,C++标准规定了每个算术类型的最小存储空间.实际上,大部分编译器都使用了更大的存储空间. 表2-1   C++:算术类型 类型 含义 最小存储空间 备注 整型 布尔值 bool 布尔型 -------- 字符型 char 字符型 8位 通常是…
成员函数的声明必须在类的内部,它的定义则既可以在类的内部也可以在类的外部.作为接口组成部分的非成员函数,它们的定义和声明都在类的外部. 定义在类内部的函数是隐式的inline函数. 成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象.当我们调用一个成员函数时,用请求该函数的对象地址初始化this(相当于Python中的self形参?).伪代码示意:Sales_data::isbn(&total),任何对类成员的直接访问都被看做this的隐式引用,也就是说,当isbn使用bookN…
1.1 编写简单的C++程序 每个C++程序都必须包含一个main函数,因为main函数是系统执行入口,且main函数是唯一被系统显示调用的函数. 定义函数必须指定4个元素:返回类型.函数名.形参表.函数体. main函数的形参个数是有限的. 返回值类型必须和函数的返回类型相同,或者可以转换为函数的返回类型. 1.2 偷窥输入输出 iostream库的基础是istream(输入流)和ostream(输出流)的类型. 流:指从某种IO设备上读入或写出的字符序列. 1.2.1  标准输入与输出对象…
多态也是C++中的一个重要的方面.多态和动态类型,虚函数本质上是指同样的事情. 1 虚函数 类中的成员函数原型前面加上virtual 表面这个函数是个虚函数.虚函数的目的是为了在继承它的派生类中又一次定义这个函数,以便于通过基类的指针或引用在执行时对派生类的函数进行调用. 2 派生类和虚函数 派生类普通情况下要重定义所继承的虚函数.有几个注意事项. <1>虚函数的声明必须和基类中的函数声明原型全然一致.例外的是当基类返回基类型的指针或者引用的时候.派生类能够派生类类型的指针或者引用 <2…
 变量和基本类型 七.枚举 枚举不但定义了整数常量集,并且还把它们聚集成组. 枚举与简单的const常量相比孰优孰劣, 通过以下一段代码. 一看便知: enum {input, output, append}; const int input = 0; const int output = 1; const int append = 2; enum {input, output, append}; const int input = 0; const int output = 1; cons…
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生出新的类.而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性. 2. 派生类构造函数首先创建基类对象,如果不调用基类构造函数,程序将使用默认的基类构造函数. 3. 创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数.派生类对象过期时,程序将首先调用派生…
第十章 对象和类   1.面向对象编程(OOP)的特性:抽象.封装和数据隐藏.多态.继承.代码的重用性. 2.指定基本类型完成了3项工作:①决定数据对象需要的内存数量.②决定如何解释内存中的位(long和float再内存中用的位数相同,但将它们转化为数值的方法不同).③决定可使用数据对象执行的操作或方法.注:对于内置类型来说,有关操作的信息被内置到编译器中.但在C++中定义用户自定义的类型时,必须自己提供这些信息. 3.使用类对象的程序都可以直接访问公有部分,但只能通过公有成员函数或友元函数来访…
第12章 类和动态内存分配 1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域运算符来指出静态成员所属的类.但如果静态成员是整形或枚举型const,则可以在类声明中初始化. P426-P427类静态成员的声明和初始化 //strnbad.h class StringBad { private: static int num_strings; - }; //strnbad.cpp int StringBad::num_strings = 0; 不能在类声明中初始化静态…
原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936473.html…
1 =default构造函数限定符 c++11针对构造函数提供了=default限定符,可以用于显式指定编译器自动生成特定的构造函数.析构或赋值运算函数.参考代码如下: class CtorDftType { public: CtorDftType()=default; CtorDftType(const CtorDftType&)=default; CtorDftType & operator = (const CtorDftType &)=default; ~CtorDftTy…
1  带有作用域的枚举 scoped-enumeration 相信大家都用过枚举量,都是不带有作用域的,在头文件中定义需要特别注意不要出现重名的情况.为了解决这种问题,c++11提供了带作用于的枚举.可以使用class EnumName定义,示例代码如下: enum {ZERO, ONE, TWO}; enum class color {RED, BLUE, GREEN}; 上面的是没有作用域的枚举定义形式,下面是带有作用域的枚举定义形式,调用带有作用域的枚举必须指定作用域,否则会编译出错. 还…
1 新的STL模板类型,std::initializer_list<T> c++11添加了initializer_list模板类型,用于提供参数是同类型情况的可变长度的参数传递机制,头文件是<initializer_list>. 其具体接口可参考cplusplus.com的介绍,地址如下:http://www.cplusplus.com/reference/initializer_list/initializer_list/?kw=initializer_list 与vector不…
bool类型与其他类型转换时,0为false,1为true 浮点数赋值给整数的时候,进行近似处理,结果仅保留浮点数小数点之前的部分 整数赋值给浮点数的时候,小数部分记为0,如果该整数超过了浮点类型的容量,精度可能丢失 当我们赋给无符号类型一个超出它表示的范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数.例如,8bit大小的unsigned char可以表示0至255区间内的值,如果我们赋了一个区间以外的值,则实际结果是该值对256取模后所得的余数..因此把-1赋给unsigned c…
顺序容器:为程序提供控制元素存储和访问顺序的能力,这种顺序与元素加入到容器时的位置相对应,而与元素值无关. 另外还有根据关键字的值来存储元素的容器:有序.无序关联容器. 另外STL还有三种容器适配器,用来与容器类型适配. 顺序容器包括 vector 可变大小数组 deque 双端队列,支持随机访问,在front/back插入.删除速度很快 list 双向链表,只支持顺序访问,在任何位置插入元素很快 forward_list 单向链表,只支持单向顺序访问 array 固定大小数组,支持随机访问,不…
方法: 1. 基本的main方法: public static void main(String[] args) 2.静态方法内部调用非静态方法:重新声明一个类,通过这个类来调用非静态方法 public class MAINMETHOD { public static void main(String[] args) { MAINMETHOD mm = new MAINMETHOD(); System.out.printf("%d", mm.max(5, 6)); } public i…
string string是标准库类型,使用时需要包涵头文件,使用using声明. include <string> using std::string; 1.定义和初始化 string s1; string s2(s1); string s2 = s1; string s3("value"); string s3 = "value"; string s4(n, 'c');//把s4初始化为连续n个字符c组成的串 2.操作 getline(is, s);…
第七章 类 练习7.32  定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在Window_mgr之前要声明Screen. 因为clear中调用Screen成员,所以Screen要在clear定义之前定义. 因为Screen类中要声明友元函数clear,而clear是Window_mgr的成员函数,所以在Screen之前要定义Window_mgr. 好乱啊啊啊啊 代码: #in…
C++ Primer 第五版课后题 练习6.32 :下面的函数合法吗?如果合法,说明其功能:如果不合法,修改其中的错误并解释原因. #include <iostream> using namespace std; int &get(int *arry, int index) { return arry[index]; } int main() { int ia[10]; for (int i = 0; i != 10; ++i) get(ia, i) = i; return 0; }…
第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象.在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来. 2. 流对象不能复制,因此不能存储在vector容器中 3. 形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用.…
所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类. 这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类.相似的,编译器也可以把一个对象拆箱为内置类型.Number类属于java.lang包. //这段没看懂 实例: public class Test{ public static void main(String args[]){ Integer x=5; x=x+10;…
Java 作为一种面向对象语言,支持以下基本概念: 多态 继承 封闭 抽象 类 对象 实例 方法 重载 对象: 是类的一个实例,有状态和行为.以人为例,黄种人.白种人.黑种人为类,每一个具体的人为类的对象. 类:   它描述一类对象的行为和状态. 软件对象的状态就是属性,行为通过方法体现. 在软件开发中, 方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成. 一个类可以包含以下类型变量: 局部变量: 在方法.构造方法或语句块中定义的变量被称为局部变量.变量声明和初始化都是在方法中,方法…
1 新的关键词nullptr c++11引入新的关键词nullptr,用于表示空指针,用于替换之前c提供的NULL(最初NULL是定义在stdlib中的宏定义,通常是0). 2 新的别名定义机制 alias declaration c++提供了使用typedef定义的别名机制,但是有时候很难理解.为了更好的使用别名机制,c++11提供了新的别名定义机制,类似代码如下: // alias declarations using VInt = int; // type alias using PInt…
以前阅读学习C++ Primer时的习题代码(当时代码风格格式比较渣): https://github.com/liyuan989/exercise/tree/master/c%2B%2B%20primer%2C%204th%20Edition (完)…
1. 主要内容 介绍程序语言的核心思想和C++的基本概念. 印象比较深刻的就是分而治之(divide and conque)的分解思想. 2. 知识广场 1) C++ 文件后缀 cc, cpp,,cxx 2) 编译器功能 一,检查错误(语法错误,类型错误): 二,代码生成(生成目标代码或者汇编指令) 3)内置类型的隐式转换 int 截取 4)#include指示符读入指定文件的内容. <>表示工程或标准头文件.从环境变量路径查找. “”表示用户提供头文件.从当前目录查找. 嵌套的头文件引入,促…
第二十三条 请不要再新代码中使用原生态类型 1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型 2 List<String>可以传递给List作为的参数,但是不能传递给List<Object>,因为泛型有子类型化的规则,List<String>是原生态类型List的一个子类型,而不是参数化类型List<Object>的子类型 3. 如果不确定类型,可以使用通配符类型 Set<?> 第二十五条 列表优于数…