自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 7.1.3

#include <string>#include <iostream>class Sales_data { std::string bookNo; unsigned units_sold = 0; double revenue = 0.0;public: std::string const& isbn() const { return bookNo; };

2016-12-31 16:41:56 172

原创 7.1.2

7.2#ifndef CP5_ex7_02_h#define CP5_ex7_02_h#include <string>struct Sales_data { std::string isbn() const { return bookNo; }; Sales_data& combine(const Sales_data&); std::string bookNo;

2016-12-31 15:43:52 374

原创 7.1.1

@ Mooophy#include <iostream>#include <string>using std::cin; using std::cout; using std::endl; using std::string;struct Sales_data{ string bookNo; unsigned units_sold = 0; double revenue

2016-12-31 15:14:43 308

转载 类型转换

reinterpret_cast:一个指针转化为其他类型的指针时,不做类型检测,操作结果是一个指针指向另一个指针的值的二进制拷贝; static_cast:允许执行隐式转换和相反的转换操作,父类转换为子类是强制转换Son *son=static_cast(father),而子类转换为父类就是隐式转换; dynamic_cast:用于对象的指针和引用,当用于多态类型转换时,允许隐式转换及相反的过程

2016-12-31 14:30:56 196

原创 6.7

6.54int func(int a, int b);using pFunc1 = decltype(func) *;typedef decltype(func) *pFunc2;using pFunc3 = int (*)(int a, int b);using pFunc4 = int(int a, int b);typedef int(*pFunc5)(int a, int b);u

2016-12-26 22:35:06 276

原创 6.6.1

6.52(a)通过类型提升(实参由char 型转换为 int 型)实现匹配(b)通过标准转换(实参由 double 型转换为 int 型)实现匹配6.53(a) int calc(int&, int&); int calc(const int&, const int&); //重载 (b) int calc(char*, char*); int calc(const char*, co

2016-12-26 21:38:31 239

原创 6.6

6.49 候选函数:声明的同名的函数都可以为候选函数。 可行函数:函数参数的数目 和类型都匹配,或者类型可以隐式转换成匹配的类型的函数,都叫可行函数6.50 (a)可行函数是void f (int,int)和 void f(double,double = 3.14).该调用不合法。存在二义性。即可将2.56转换为 int 型而调用前者,亦可将42转换为 double型而调用后者。(b)可行函数

2016-12-26 21:33:01 258

原创 6.5.3

6.47#include <iostream>#include <vector>using std::vector; using std::cout; using std::endl;#define NDEBUGvoid printVec(vector<int> &vec){#ifdef NDEBUG cout << "vector size: " << vec.size() <<

2016-12-26 21:23:53 262

原创 6.5.2

6.43(a) inline bool eq(const BigInt&, const BigInt&){.....};(b) void putValues(int *arr,int size);都放在头文件中,a是inline函数,b是函数声明,都应该放在头文件中6.44inline bool is_shorter(const string &lft, const string &rht) {

2016-12-26 20:57:04 206

原创 6.5.1

6.40 (a) int ff(int a, int b = 0, int c = 0); //正常的 (b) char *init(int ht = 24, int wd, char backgrnd);//ht有默认值,所以后面的形参都必须有默认值6.41char *init(int ht, int wd = 80, char backgrnd = ' ');(a) init();(

2016-12-26 17:13:41 276

原创 6.39

(a) int calc(int, int); //计算两个数的值, //因为const为顶层,所以重复声明了int calc(int, int); int calc(const int, const int); (b) int get(); //返回一个double类型。 //重复声明了int get(); do

2016-12-26 17:01:51 268

原创 6.3.3

6.36string (&func(string (&arrStr)[10]))[10]6.37using ArrT = string[10]; ArrT& func1(ArrT& arr); // 这种可能更好auto func2(ArrT& arr) -> string(&)[10];string arrS[10];decltype(arrS)& func3(ArrT& arr);

2016-12-26 16:54:12 283

原创 6.3.2

6.30 [Error] return-statement with no value, in function returning ‘bool’ [-fpermissive]6.31 返回局部变量的引用 显然是无效的。 当我们希望返回的对象被修改时,返回的常量引用无效。6.32int &get(int *arry, int index) //合法 ,返回指定位置的值{

2016-12-26 16:21:23 799

原创 POD type

What is POD type:A type that consists of nothing but Plain Old Data.A POD type is a C++ type that has an equivalent in C, and that uses the same rules as C uses for initialization, copying, layout, and

2016-12-26 15:25:31 472

原创 6.2.6

6.27void sum(initializer_list<int> il){ int sum=0; for(auto i: il) sum+=i; return sum;}6.28 const string&.6.29 引用类型 传递效率更高,直接传递本体,省去了构造和析构局部变量的麻烦。 更多可以参考Effective C++

2016-12-26 15:24:41 212

原创 C++11 initializer_list形参

为了编写能处理不同数量实参的函数,C++11提供2种方法。 1.实参类型相同,传递一个initializer_list的标准库类型 2.类型不同,可变函数模板initializer_list形参: 如果函数的实参数量未知但是全部实参的类型都相同,我们可以使用initializer_list类型的形参。initializer_list是一种标准库类型,用于表示某种特定类型的值的数组。initia

2016-12-26 15:13:22 907

原创 6.2.5

char **argv 指针的指针 和 char *argv[ ] 或者 char argv[ ][ ] 本质是是一个意思。#include <iostream>#include <string>int main(int argc, char **argv){ std::string str; for (int i = 1; i != argc; ++i)

2016-12-25 22:16:47 342

原创 6.24习题有感-关于C++传数组和返回数组的问题

先看一下我写的答案6.24 const int ia[10],传递的是一个指针,并不是数组,我们应该使用reference来告诉它,我们传递的是数组, 改正:#include<iostream>void print(const int (&ia)[10]){ for (size_t i = 0; i != 10; ++i) std::cout << ia[i] <<

2016-12-25 22:00:23 433

原创 6.2.4

6.21#include <iostream>using std::cout;int larger_one(const int i, const int *p){ return (i > *p) ? i : *p;}int main(){ int i = 6; cout << larger_one(7, &i); return 0;}6.22void swap

2016-12-25 21:46:05 325

原创 6.2.3

6.16bool is_empty(string& s) { return s.empty(); }对于const的string 不适应,并且在不改变本体是时候,最后使用const来限制6.17#include <iostream>#include <string>using std::cout; using std::endl; using std::string;bool any_capit

2016-12-25 18:04:16 307

原创 6.2.2

#include <iostream>void reset(int &i){ i = 0;}int main(){ int i = 42; reset(i); std::cout << i << std::endl; return 0;}6.12#include<iostream>using namespace std;void swap(int

2016-12-25 17:14:35 232

原创 6.2.1

6.10#include<iostream>using namespace std;void swap(int *pa,int *pb) { int c = *pa; *pa = *pb; *pb = c;}int main() { int a = 5, b = 6; int *pa = &a; int *pb = &b; swap(pa

2016-12-25 16:30:14 374

原创 6.1.3

#include "Chapter6.h" //fact.cc#include <iostream>int fact(int val){ if (val == 0 || val == 1) return 1; else return val * fact(val-1);}int func(){ int n, ret = 1; std::cout << "i

2016-12-25 15:58:46 309

原创 6.1.2

6.8int fact(int val);int func();template <typename T> T abs(T i){ return i >= 0 ? i : -i;}

2016-12-25 15:51:14 246

原创 6.1.1

6.6 形参 是传给函数用的一个参数的拷贝体。 局部变量 是函数体类自己声明的变量,会在函数结束后被析构掉。 局部静态变量 函数体类声明的static 变量,第一次声明后会一直存在。int pypara(int n){ //n是形参 static int a=5; //a是局部静态变量 int b=6;

2016-12-25 15:44:30 194

原创 6.1

6.1 实参是 数据本身,形参通过实参来初始化。 形参可以理解成实参的一份拷贝,在函数中起作用而不影响数据本身。 如果想要直接使用实参,要用指针和引用。6.2(a) int f() { string s; // ... return s; //返回的是string,而函数声明的是int 不匹配 }(b) f2(int

2016-12-24 21:50:50 268

原创 5.6.3

5.23#include <iostream>using namespace std;int main() { int i, j; cin >> i >> j; cout << i / j << endl; return 0;}5.24#include <iostream>#include <stdexcept>using namespace std;in

2016-12-24 17:48:31 173

原创 5.5.3

for (int sz = get_size(); sz <=0; sz = get_size())

2016-12-24 16:45:44 281

原创 5.5.2

#include<iostream>#include<string>using namespace std;int main() { string str, prestr; bool twice = false; while (cin >> str) { if (isupper(str[0]) &&str == prestr) {

2016-12-24 16:44:50 252

原创 5.5.1

5.20#include<iostream>#include<string>using namespace std;int main() { string str, prestr; while (cin >> str) { if (str == prestr) { break; } else {

2016-12-24 16:31:23 348

原创 5.4.4

5.18(a) do { // 加花括号 int v1, v2; cout << "Please enter two numbers to sum:" ; if (cin >> v1 >> v2) cout << "Sum is: " << v1 + v2 << endl; }while (cin);(b) int i

2016-12-23 22:44:05 297

原创 5.4.2

5.15(a) for (int ix = 0; ix != sz; ++ix) { /* ... */ } if (ix != sz) //ix是局部变量,这一句中没有定义 // . . .(b) int ix; for (ix != sz; ++ix) { /* ... */ }//for中缺少一个语句(c) for (int ix = 0; ix != sz; +

2016-12-23 17:05:21 374

原创 5.4.1 mark

5.14

2016-12-23 16:50:35 207

原创 5.3.2

#include <iostream>using namespace std;int main(){ unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0; char ch; while (cin >> ch) { if (ch == 'a') ++aCnt; else i

2016-12-23 16:09:23 258

原创 5.3.1

5.5 @Mooophy#include <iostream>#include <vector>#include <string>using std::vector; using std::string; using std::cout; using std::endl; using std::cin;int main(){ vector<string> scores = { "

2016-12-23 15:39:48 247

原创 5.2

5.4 while (string::iterator iter != s.end()) { /* . . . */ } 改正:std::string::iterator iter = s.begin();while (iter != s.end()) { /* . . . */ }while (bool status = find(word)) { /* . . . / } if (!stat

2016-12-23 15:19:25 198

原创 5.1

5.1 用一个分号 ; 表示语句结束,但是语句中什么内容也没有。 在一个语句你不需要任何操作的时候,就使用空语句5.2 用花括号括起来的 块,一个块有自己的作用域。块里有自己的局部变量什么的。5.3#include <iostream>int main(){ int sum = 0, val = 1; while (val <= 10) sum += va

2016-12-23 15:15:59 268

原创 4.11.3

4.36i *= static_cast<int>(d);4.37int i; double d; const string *ps; char *pc; void *pv;pv = (void*)ps; // pv = const_cast<string*>(ps); 或者 pv = static_cast<void*>(const_cast<string*>(ps));i = int(*pc

2016-12-22 17:16:41 214

原创 4.11.1

4.34if (fval) // fval变成 bool类型dval = fval + ival; // ival int 变成 fval float,最后变成doubledval + ival * cval; // cval char 变成int, 然后 int 变成double4.35char cval; int ival; unsigned int ui; float fval; doub

2016-12-22 17:11:25 349

原创 4.10

4.31 使用前置版本一般比后置版本快,并且节省空间。 ++i,直接递增1,并且返回增1后的数 i++,递增1,但是要保存递增之前的数。并返回。也就是说要保存2个数使用哪个版本,看你想达到什么效果,一般情况下建议使用前置版本4.32constexpr int size = 5;int ia[size] = { 1, 2, 3, 4, 5 };for (int *ptr = ia, ix =

2016-12-22 17:03:01 256

计算机网络自顶向下方法 原书第6版

计算机网络 自顶向下方法 原书第6版

2018-04-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除