- 博客(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.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.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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人