C++ Primer 3ed 学习笔记
Posted freshui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 3ed 学习笔记 相关的知识,希望对你有一定的参考价值。
C++的内置数据类型和标准库类之间的类型是符合类型,如:指针和数组类型。C++对数组提供了内置支持,但是仅限于对数据则单个元素的读写,对整个数组的操作则不支持(如用一个数组赋值给另一个数组)
数组名是一个指针,但是常量指针
2.1 为什么内置数组类型不支持数组之间的赋值。支持这种操作要什么信息?
答:数组名是一个常量指针,可以将数组赋值给一个指针变量,但是常量之间不能赋值。支持赋值操作至少在编译器操作数组的时候直到数组的长度。
2.2 你认为作为一等公民的数组应该支持什么操作?
数组初始化
数组比较
数组赋值
数组大小查询
数组索引范围检验等
静态与动态内存分配的两个主要区别:
1、 静态对象是有名字的变量,可以直接对其操作。动态对象是没有名字的变量,只能通过指针简介对其进行操作
2、 静态对象的分配与释放由编译器自动处理,不需要程序员处理任何事情。动态对象的分配与释放,必须由程序员显示的给出,有new和delete表达式完成,通常这两个表达式要配对使用。
2.3
a) 静态分配对象,对象名字为 ival
b)pi是一个指针,其中保存的是整形变量ival的地址
c) pi2是一个指针,指向动态分配的一个报存int类型数据且值为1024的内存块
d) pi3是一个指针,指向动态分配的一个保存1024个整形数据的起始地址
2.4
while循环中的*pi就是10,因此循环变成10<10 循环体将一次都不执行。同时,如果循环体执行的话,pia[*pi]=pia[10],这也是一个错误,不过因为while的条件限制,这个情况是不会发生的。
类的重载操作符,注意重载后要注意函数返回值要不要用引用,因为只有引用才可能用于左值。
2.5
//
test.cpp : 定义控制台应用程序的入口点。
//
#include < iostream >
using namespace std;
class Matrix
... {
private:
float **data;
int col;
int row;
public:
//---member function for init matrix
Matrix(int col=0;int row=0);// default constuctor
Matrix(float **dt);
Matrix(const Matrix &Mtx);
Matrix& operator=(const Matrix &Mtx);
int getCol() const;
int getRow() const;
float operator()(int x,int y) const; // index operator,this is read only member function
float& operator()(int x,int y); // this can modify the member data
virtual ~Matrix();
}
class Date
... {
private:
int year;
int month;
int day;
public:
Date(int year=0,month=0,day=0);
Date(const Date &dt);
Date& operator=(const Date &dt);
bool operator==(const Date &dt);
bool operator!=(const Date &dt);
int getYear() const;
int getMonth() const;
int getDay() const;
void addDay(int);
void addMonth(int);
void addYear(int);
virtual ~Date();
} ;
//
#include < iostream >
using namespace std;
class Matrix
... {
private:
float **data;
int col;
int row;
public:
//---member function for init matrix
Matrix(int col=0;int row=0);// default constuctor
Matrix(float **dt);
Matrix(const Matrix &Mtx);
Matrix& operator=(const Matrix &Mtx);
int getCol() const;
int getRow() const;
float operator()(int x,int y) const; // index operator,this is read only member function
float& operator()(int x,int y); // this can modify the member data
virtual ~Matrix();
}
class Date
... {
private:
int year;
int month;
int day;
public:
Date(int year=0,month=0,day=0);
Date(const Date &dt);
Date& operator=(const Date &dt);
bool operator==(const Date &dt);
bool operator!=(const Date &dt);
int getYear() const;
int getMonth() const;
int getDay() const;
void addDay(int);
void addMonth(int);
void addYear(int);
virtual ~Date();
} ;
2.6 第一个需要,第二个不需要
2.8
成员函数是一种函数
构造函数是一种成员函数
飞机是一种交通工具
圆形是一种几何图形
正方形是一种矩形
2.9
rotate():可以定义为虚函数
print(): 可以定义为虚函数
size(): 可以共享,所有类中
dateBorrowed():可作为虚函数
rewind(): 独自
borrower():独自
is_late():独自
is_on_loan():独自
2.10
类对自己和别的类的关系也不能搞的太绝对,不应该对外界一视同仁,应该有个亲密关系的,所以protected很必要
以上是关于C++ Primer 3ed 学习笔记 的主要内容,如果未能解决你的问题,请参考以下文章